使用 Selenium 轻松自动化 Shadow DOM 元素
当自动化具有复杂多级 Shadow DOM 元素的网页时,Selenium 传统的 findElement 方法可能会失败短的。然而,随着 Selenium 4 的出现,出现了一个突破性的解决方案:WebElement.getShadowRoot()。
考虑一个具有以下 DOM 结构的网页:
<body> <div>
与输入元素在影子根中,我们现在可以利用以下 Selenium 4 代码:
WebElement parentElement = driver.findElement(By.id("parent-element")); WebElement shadowRootElement = parentElement.getShadowRoot(); WebElement inputElement = shadowRootElement.findElement(By.cssSelector("#my-input"));
这种方法消除了对繁琐的 JS Executor 方法或不可靠的深层 CSS 选择器的需要。此外,它允许更简单和可维护的自动化脚本。
需要注意的是,在影子根中,定位器的选择是受到限制的。例如,在 Chrome 中,By.cssSelector() 和 By.className() 是有效选项,而 By.id() 和 By.tagName() 可能会导致 InvalidArgumentException。
使用 Selenium 4 的 WebElement。 getShadowRoot(),自动化影子 DOM 元素已成为一个无缝过程,使开发人员能够轻松测试复杂的 Web 应用程序。
以上是Selenium 4 如何简化 Shadow DOM 元素的自动化?的详细内容。更多信息请关注PHP中文网其他相关文章!