我试图解决一个谷歌验证码与 selenium ,使用Python
我使用this简单的例子网站进行测试,但我有困难理解如何选择一个按钮,是在一个阴影根。
这个图像显示了我需要获取的按钮元素。
我知道我需要先获取外部的div元素,然后搜索内部的元素,但是我没有这样做,因为我并不100%清楚如何在执行以下操作后导航到内部元素:driver.execute_script("return document.querySelector('div[class=\"button-holder help-button-holder\"]')
This问题是关于类似的(相同?))问题,但没有工作解决方案。
1条答案
按热度按时间7kjnsjlb1#
元素被放置在
shadow-root
中,状态为closed
。当影子根的模式为“closed”时,影子根的实现内部是不可访问和不可更改的,因此您无法访问
shadowRoot
属性。由于Selenium实现了CDP协议API,因此在页面加载时,可以使用
open
状态覆盖shadow-root
和closed
状态。您只需要覆盖
Element
类原型方法attachShadow
,并在页面加载之前在新文档上评估脚本。How to override Element properties
How to executed script on load via CDP Protocol
代码示例: