首頁 >Java >java教程 >如何使用 Selenium 存取 Chrome 的「清除瀏覽資料」對話方塊中的 Shadow DOM 元素並與之互動?

如何使用 Selenium 存取 Chrome 的「清除瀏覽資料」對話方塊中的 Shadow DOM 元素並與之互動?

Barbara Streisand
Barbara Streisand原創
2024-12-19 15:06:09299瀏覽

How to Access and Interact with Shadow DOM Elements in Chrome's

在透過CSS 選擇器清除Chrome 瀏覽器資料時與#shadow-root (open) 內的Shadow DOM 元素互動

自動化Chrome 瀏覽器的透過Selenium彈出“清除瀏覽資料”,存取#shadow-root(開啟)中的元素,例如“清除資料”按鈕,可能具有挑戰性。這是因為 Shadow DOM 元素無法透過常規 DOM 樹直接存取。

定位 Shadow Host 和 Root

與 Shadow DOM 元素交互,我們首先需要識別影子宿主,它是主 DOM 中包含影子 DOM 的元素。一旦找到影子主機,我們就可以使用 Selenium JavaScript Executor 中的 getShadowRoot() 方法來擷取主機的影子根。

遍歷 Shadow Levels

如果存在多個層級的 Shadow DOM,我們需要遍歷這些層級才能到達所需的元素。為此,我們可以透過在目前影子根中定位影子主機,然後使用 getShadowRoot() 檢索其影子根來遞歸地重複上述過程。

範例程式碼

下面的範例示範如何使用 getShadowRoot() 方法並遞歸遍歷來存取“清除資料” 「清除瀏覽資料」彈出視窗中的按鈕:

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement shadowHost = driver.findElement(By.cssSelector("settings-ui"));
WebElement shadowRoot = (WebElement) js.executeScript("return arguments[0].shadowRoot", shadowHost);
WebElement clearData = (WebElement) js.executeScript("return document.querySelector('settings-ui').shadowRoot.querySelector('settings-main').shadowRoot.querySelector('settings-basic-page').shadowRoot.querySelector('settings-section > settings-privacy-page').shadowRoot.querySelector('settings-clear-browsing-data-dialog').shadowRoot.querySelector('#clearBrowsingDataDialog').querySelector('#clearBrowsingDataConfirm')");
clearData.click();

透過利用此方法,您可以有效地與#shadow-root(開啟)中的元素進行互動並執行所需的操作。

以上是如何使用 Selenium 存取 Chrome 的「清除瀏覽資料」對話方塊中的 Shadow DOM 元素並與之互動?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn