在 Reddit.com 上,当我单击登录按钮时,会出现一个对话框来填写登录详细信息,但对话框上的登录按钮无法通过任何定位器访问。当我使用 Chrome 浏览器为该 WebElement 复制各种定位器并使用 ctrl+f 搜索验证它们时,浏览器无法找到它自己生成的定位器路径或地址。其他 WebElement 工作正常。我已在附图上显示了按钮。任何帮助将非常感激
您的元素放置在多个影子根中,要访问它们,您应该使用 js 执行器,具体取决于您的语言。
您应该遍历每个影子主机,获取其
shadowRoot
属性并查询内部元素。
获取按钮的JS脚本是
document.querySelector('shreddit-overlay-display').shadowRoot
.querySelector('shreddit-signup-drawer').shadowRoot
.querySelector('shreddit-slotter').shadowRoot
.querySelector('button.login')
如何在 Python 上执行此操作的示例
js_script = """
document.querySelector('shreddit-overlay-display').shadowRoot
.querySelector('shreddit-signup-drawer').shadowRoot
.querySelector('shreddit-slotter').shadowRoot
.querySelector('button.login')
"""
login_button = driver.execute_script(js_script)