在 Shadow DOM 元素中导航和交互始终对 Web 自动化构成挑战。本文探讨了 Selenium 4 中引入的最新解决方案,该解决方案简化了此过程。
Shadow DOM 是一种用于创建封装 DOM 树的 Web 开发技术,从主文档树中隐藏。这些元素通常用于性能优化和模块化。然而,它们的默默无闻使得它们很难与传统的 Selenium 方法(如 findElement)进行交互。
Selenium 4 引入了一种名为 WebElement 的新方法。 getShadowRoot() 允许与影子 DOM 元素直接交互。此方法返回 Shadow DOM 的根元素,您可以使用它来进一步导航并查找其中的子元素。
与影子 DOM 元素,可以使用以下语法:
driver.findElement(By.id("parentId")).getShadowRoot().findElement(By.cssSelector("label")).findElement(By.tagName("input"));
在这个例子中,我们首先找到其父元素Shadow DOM,然后使用 getShadowRoot() 访问 Shadow 根。从那里,我们可以使用标准的 Selenium 方法来查找影子 DOM 中的特定子元素。
值得注意的是,影子根是有限的。例如,在影子根中使用 By.id() 或 By.tagName() 可能会导致 InvalidArgumentException。 By.cssSelector() 和 By.className() 仍然有效。
以上是Selenium 4 如何简化 Shadow DOM 元素的自动化?的详细内容。更多信息请关注PHP中文网其他相关文章!