【问题标题】:Selenium access multiple shadow dom elements in a dropdown?Selenium 在下拉列表中访问多个影子 dom 元素?
【发布时间】:2020-06-07 05:44:36
【问题描述】:

我有一个下拉列表,我想单击其中一项并跟踪页面上的一些活动。

我的 HTML 结构看起来像这样

    <slot>
    #shadowroot
    <myoption-cmp> #shadowroot <some anchor text>
    <myoption-cmp> #shadowroot <some anchor text>
    </slot>

.....

如果您可以看到有 2 个 &lt;myoption-cmp&gt; 元素,我尝试使用 findElements(By.cssSelector('myoption-cmp')。我不断收到“org.openqa.selenium.WebDriverException: javascript error: Cannot read property ' querySelectorAll' of null"。我的 Selenium 示例代码:

WebElement solt = parentElement.findElement(By.cssSelector("slot"));
WebElement shadowSlot = expandShadow(slot);
List<WebElement> menuCmp = shadowSlot.findElements(By.cssSelector("myoption-cmp"));
// I expect to get the list of elements nd then I'd like to access it as below.
WebElement shadow2 = expandShadow(menuCmp.get(0));
WebElement anchor = shadow2.findElement(By.cssSelector("a"));
anchor.click();  

只是想知道我是否做错了什么。

我尝试使用 findElement 和 findElements,但都给了我错误 像“org.openqa.selenium.WebDriverException:javascript错误:不能 读取属性 'querySelector/querySelectorAll' of null"。

感谢任何帮助或建议。

【问题讨论】:

    标签: javascript java selenium


    【解决方案1】:

    能够找到解决方案。我需要使用

    findElementInShadowRoot(shadowSlot, By.cssSelector('myoption-cmp'));

    然后展开该元素以访问第二个阴影下方的子元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 1970-01-01
      • 2022-12-12
      • 2019-11-15
      • 1970-01-01
      相关资源
      最近更新 更多