在C#中使用Selenium Webdriver时,尝试选择Shadow DOM下存在的元素时出现异常。

我得到的例外是:NoSuchElementException

您如何建议将Selenium与Shadow DOM一起使用?

谢谢,

米哈尔

c# - 带有Shadow DOM的Selenium Webdriver-LMLPHP

最佳答案

尝试这样定位您的元素:

driver.FindElement(By.CssSelector('selector_otside_shadow_root /deep/ selector_inside_shadow_root'));


您的情况是:

driver.FindElement(By.CssSelector('app-home /deep/ #itemName1'));


您可以使用chrome://downloads/css_selector链接中测试此方法:

downloads-manager /deep/ downloads-item /deep/ [id=file-link]


在开发工具中。如您所见,需要传递两个shadow-root元素,因此请确保只有一个shadow-root元素或使用多个/deep/,如上面的示例所示。

或者您可以像这样使用JavasciptExecutor:

IJavaScriptExecutor js = (IJavaScriptExecutor)_driver;
var element = js.ExecuteScript("return document.querySelector('selector_outside_shadow_root').shadowRoot.querySelector('selector_inside_shadow_root');");



注意:据我所知,第一个建议仅在Chrome中有效,如果您想使用跨浏览器解决方案-请使用第二个。

关于c# - 带有Shadow DOM的Selenium Webdriver,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51346883/

10-13 06:12