Selenium C#:无法单击用户将鼠标悬停在出现的#shadow-root(闭合)中的元素

时间:2019-12-04 04:14:02

标签: c# selenium selenium-webdriver webdriver shadow-dom

enter image description here

我已将代码的屏幕截图附加到屏幕上,并用红色标记了需要单击的元素。 当我们将鼠标悬停在另一个对象上后,该元素就会显示-鼠标悬停成功了,我可以看到此元素已显示,但单击失败

我的代码是

var LinksSurce = sourceThumb.FindElement(By.ID("linkSource"));
     LinksSurce.Click();     

我遇到的错误是元素难处理

注意:我已经阅读并尝试了这些帖子中建议的解决方案,但没有一个起作用 Selenium Web Driver & Java. Element is not clickable at point (x, y). Other element would receive the click

Debugging "Element is not clickable at point" error

Selenium - Element is not clickable at point

1 个答案:

答案 0 :(得分:2)

根据您共享的屏幕截图,该元素显然在 #shadow-root (closed) 之内。

我们已经讨论了Shadow DOM traversal supportSelenium一段时间了,主要的收获是:

  • @ 43081j提到,对于封闭的影子根,应该接受您无法访问它(抛出异常)。因此,我们不必关心封闭的根,因为无论如何我们都无法访问它们。
  • @AutomatedTester在他的spec proposal中建议可以在Shadow DOM上下文和文档上下文之间移动。

因此,当前您将无法与#shadow-root (closed)中的元素进行交互。


结论

如果#shadow-root打开,我们可以轻松地与所需元素进行交互。您可以在以下位置找到一些相关的讨论:


替代

Shadow root DOM automation using selenium


参考

几个拉取请求: