我有一个下拉列表,我想单击其中一项并跟踪页面上的某些 Activity 。
我的 HTML 结构看起来像这样
<slot>
#shadowroot
<myoption-cmp> #shadowroot <some anchor text>
<myoption-cmp> #shadowroot <some anchor text>
</slot>
......
如果你可以看到有 2 <myoption-cmp>
元素,我尝试使用 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();
只是想知道我是否做错了什么。
I tried using findElement and findElements, but both gave me errors like "org.openqa.selenium.WebDriverException: javascript error: Cannot read property 'querySelector/querySelectorAll' of null".
如有任何帮助或建议,我们将不胜感激。
最佳答案
能够找到解决方案。我需要使用
findElementInShadowRoot(shadowSlot, By.cssSelector('myoption-cmp'));
然后展开该元素以访问第二个阴影下方的子元素。
关于javascript - Selenium 在下拉列表中访问多个 Shadow dom 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62241338/