使用 Selenium 4 访问 Shadow DOM 元素
使用 Selenium 的 findElement 方法自动化网页时,您会遇到与 Shadow DOM 元素交互的困难。此查询探索了障碍并提出了有效的解决方案。
传统方法的挑战
您尝试的深层 CSS 和 JS 执行器方法有局限性。 Deep CSS 在最近的 Chrome 版本中出现故障,而 JS Executor 则需要繁琐且难以管理的代码。
Selenium 4 的解决方案
幸运的是,Selenium 4 引入了 WebElement。 getShadowRoot() 方法,可以直接访问影子 DOM 元素。下面是一个示例:
driver.findElement(By.id("parentId")).getShadowRoot().findElement(By.cssSelector("label")).findElement(By.tagName("input"))
Shadow DOM 访问的限制
请记住,通过 WebElement.getShadowRoot() 访问 Shadow DOM 元素有一定的限制。具体来说,选择器受到影子根结构的深度和有效性的限制。例如,根据上下文,By.id() 和 By.tagName() 可能不是可行的选择。
以上是Selenium 4如何高效访问Shadow DOM元素?的详细内容。更多信息请关注PHP中文网其他相关文章!