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