tes*_*hon 3 python selenium dom shadow-dom polymer
我正在使用 Selenium (Python) 来自动化网页。我正在尝试从#shadow-root(用户代理)下的输入字段获取文本。我使用的Xpath:
driver.find_element_by_xpath("**//*/p-calendar/span/input**").text
Run Code Online (Sandbox Code Playgroud)
没有返回任何东西。附上我的 DOM 元素的屏幕截图。要求:从影子根获取文本:01:01
根据@hayatoito(Shadow DOM 的创建者)的评论:
引入封闭影子树的最初动机是
"Never allow an access to a node in a closed shadow tree, via any APIs, from outside",AFAIK。<video>就像这样,我们无法访问Blink 中 element中使用的内部隐藏影子树中的节点。
其实我就是这样设计了一棵封闭的影子树的。如果有一种方法可以访问封闭影子树中的节点,则应将其视为规范的错误。
我认为拥有一个 API 来允许在 Chrome 应用程序或扩展程序层进行访问是完全可以的。但是,对于普通的网络应用程序,我认为当前的协议是
"Never allow it".
如果我们允许,那就意味着我们不需要封闭的影子树。我认为只要有一棵开放的影子树就足够了。
@Supersharp在他的评论下面,他在讨论中的答案中进一步说明了如何使用 JavaScript 获取用户代理影子根中的元素?提到:
#shadow-root (user-agent)是浏览器供应商的本机实现,因此它们没有记录并且永远无法访问。根据规范,仅开放 Shadow DOM
最近,@AutomatedTester [David Burns,Mozilla Corporation 首席培根官] 发起了关于WebDriver - Web 组件的可测试性的讨论
目前,Selenium 团队已开放接受拉取请求。
您可以在以下位置找到一些相关的详细讨论:
在这里您可以找到有关如何使用 selenium 自动执行影子 DOM 元素?
| 归档时间: |
|
| 查看次数: |
5853 次 |
| 最近记录: |