使用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中文網其他相關文章!