寻找自动化 Shadow DOM 元素的方法可能是 Selenium 用户的痛点。 Shadow DOM 是一种从主 DOM 树中隐藏网页部分的方法,创建一个单独的、封装的 DOM 树。这可能会使自动化工作变得复杂,因为像 findElement() 这样的传统 Selenium 方法可能无法访问这些元素。
尝试过但失败的解决方案:
对抗针对这个问题,开发者尝试了多种解决方案,包括:
硒 4解决方案:
幸运的是,Selenium 4 引入了一个解决方案:WebElement.getShadowRoot() 方法。此方法允许开发人员访问元素的影子根,从而使其能够与其子元素进行交互。
示例:
driver.findElement(By.id("parentId")).getShadowRoot().findElement(By.cssSelector("label")).findElement(By.tagName("input"));
限制:
而getShadowRoot()解决了访问shadow DOM的问题元素,它具有一定的局限性。具体来说,影子根中不支持 By.id() 和 By.tagName() 定位器,而 By.cssSelector() 和 By.className() 可以使用。
结论:
Selenium 4 的 WebElement.getShadowRoot() 方法提供了一种方便高效的方法来自动化影子 DOM 元素,消除了需要复杂的解决方法。借助此工具,开发人员现在可以自信地与这些隐藏元素进行交互,从而释放其自动化测试套件的全部潜力。
以上是Selenium 4 如何高效自动化 Shadow DOM 元素?的详细内容。更多信息请关注PHP中文网其他相关文章!