如何读取#shadow-root(用户代理)下的文本
我正在使用 Selenium (Python) 来自动化网页。我正在尝试从#shadow-root(用户代理)下的输入字段获取文本。 我使用的 Xpath:
driver.find_element_by_xpath("**//*/p-calendar/span/input**").text
没有返回任何内容。 附上我的 DOM 元素的屏幕截图。 要求:从影子根获取文本:01:01
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
根据
@hayatoito
(Shadow DOM 的创建者)评论:在他自己在讨论中的回答下面的评论中进一步
@Supersharp
如何使用 JavaScript 获取用户代理影子根中的元素? 提到:WebDriver 的观点
,只有开放的 Shadow DOM 是开放的。 com/w3c/webcomponents/issues/771" rel="noreferrer">WebDriver - Web 组件的可测试性
目前 Selenium 团队 已开放用于接受相同的拉取请求。
参考
您可以在以下位置找到一些相关的详细讨论:
Outro
在这里你可以找到关于如何使用selenium自动化影子DOM元素?
As per
@hayatoito
's (creator of Shadow DOM) comment:Furhter
@Supersharp
in his comment below his own answer within the discussion How to get element in user-agent shadow root with JavaScript? mentions:WebDriver perspective
Recently, @AutomatedTester [David Burns, Chief Bacon Officer, Mozilla Corporation] initiated a discussion on WebDriver - Testability of web components
Currently Selenium Team is open for accepting pull requests for the same.
Reference
You can find a couple of relevant detailed discussions in:
Outro
Here you can find a relevant discussion on How to automate shadow DOM elements using selenium?
您可以使用 driver.execute_script 注入返回 ShadowRoot 的 JavaScript 代码,然后使用 find_element 获取您要查找的影子根的子元素。
$1 -
您的元素的标识符或选择器
。如果你热衷于使用 xpath 来查找元素
You can use
driver.execute_script
to inject JavaScript code that returns the ShadowRoot then usefind_element
to get the children element of the shadow root you are looking for.$1 -
Your element's identifier or selector
.If you are keen to using xpath to find elements
如果您的控件位于 Shadow-root(用户代理)内部。您可以使用 Shadow-root(用户代理)的父级执行输入文本、获取值和单击。
示例:考虑有问题的 HTML DOM 共享。
(Selenium/C# 代码)-同样也应该适用于其他人
If your control is inside Shadow-root (user-agent). You can perform enter text, get value and click by using the Parent of Shadow-root (user-agent).
Example: Considering HTML DOM shared in question.
(Selenium/C# code) - same should work for others as well