无法访问位于多个影子根目录内的 Reddit 登录按钮

问题描述 投票:0回答:1

在 Reddit.com 上,当我单击登录按钮时,会出现一个对话框来填写登录详细信息,但对话框上的登录按钮无法通过任何定位器访问。当我使用 Chrome 浏览器为该 WebElement 复制各种定位器并使用 ctrl+f 搜索验证它们时,浏览器无法找到它自己生成的定位器路径或地址。其他 WebElement 工作正常。我已在附图上显示了按钮。任何帮助将非常感激

css selenium-webdriver xpath css-selectors
1个回答
0
投票

您的元素放置在多个影子根中,要访问它们,您应该使用 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)

参考类似问题

© www.soinside.com 2019 - 2024. All rights reserved.