在Selenium Java 中自動化Shadow DOM 元素
儘管有大量的網頁使用多層影子根DOM 元素,但仍可以與它們進行交互事實證明,透過Selenium findElement 具有挑戰性。像 Deep CSS 和 JS Executor 這樣的傳統方法已經變得無效或麻煩。
Selenium 4 引入了 getShadowRoot() 方法
Selenium 版本 4 帶來了重大突破,引入了WebElement.getShadowRoot() 方法。此方法提供了一種無縫方式導航到陰影 DOM 元素。以下是一個程式碼範例:
driver.findElement(By.id("parentId")).getShadowRoot().findElement(By.cssSelector("label")).findElement(By.tagName("input"));
此程式碼片段導覽 ID 為「parentId」的父元素,輸入其影子根,在影子根中定位標籤元素,最後選擇其中的輸入元素標籤。
要注意的是,一旦進入影子根,導航選項就會受到限制。對於 Chrome,僅支援 By.cssSelector() 和 By.className(),而 By.id() 和 By.tagName() 可能會導致 org.openqa.selenium.InvalidArgumentException。
以上是Selenium 4 如何簡化與 Shadow DOM 元素的交互作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!