单击位于阴影根内部的元素时,出现空指针异常(已关闭)
尝试使用Java脚本处理它:
public WebElement getShadowRootElement(WebElement element) {
return (WebElement)
((JavascriptExecutor)
driver).executeScript("return
arguments[0].shadowRoot", element);
}
结果:
Cannot read property 'shadowRoot' of null
添加了屏幕截图:
1.
最佳答案
如果您的用例是要与<path>
标记内的<svg>
元素进行交互,则实际上是在#shadow-root (closed)
内。
该comment中的@hayatoito(Shadow DOM的创建者)明确提到:
引入封闭的阴影树的原始动机是"Never allow an access to a node in a closed shadow tree, via any APIs, from outside"
,AFAIK。这样,我们无法访问Blink中<video>
元素中使用的内部隐藏阴影树中的节点。
实际上,我以这种方式设计了一个封闭的影子树。如果可以访问封闭的影子树中的节点,则应将其视为规范的错误。
我认为拥有一个允许在Chrome应用或扩展程序层中进行访问的API完全可以。
但是,对于普通的Web应用程序,我认为当前协议为"Never allow it"
。
如果我们允许,那就意味着我们不需要封闭的影子树。我认为只有一棵开放的影子树就足够了。
WebDriver透视图
最近,@ AutomatedTester [Mozilla公司首席培根官David Burns]发起了关于WebDriver - Testability of web components的讨论
Requests
Proposals
Issue Tracker
目前,Selenium团队已开放接受相同请求。
奥托罗
在这里您可以找到有关How to automate shadow DOM elements using selenium?的相关讨论