首頁 > Java > java教程 > 如何使用 Selenium 與 Chrome 的「清除瀏覽資料」Shadow DOM 元素互動?

如何使用 Selenium 與 Chrome 的「清除瀏覽資料」Shadow DOM 元素互動?

Mary-Kate Olsen
發布: 2024-12-28 01:20:15
原創
415 人瀏覽過

How to Interact with Chrome's

如何在使用cssSelector 清除Chrome 瀏覽器的瀏覽資料時定位Shadow DOM (#shadow-root) 中的元素

與Shadow互動時Chrome 的「清除瀏覽資料」彈出視窗中的DOM 元素,必須先找到#shadow-root 元素。使用 Selenium 的多次嘗試都遇到了錯誤。

解決方案:

要克服這些錯誤,請按照以下JavaScript 程式碼找到#shadow-root element:

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')
登入後複製

說明:

  • Selenium 不明確支持與Shadow DOM 元素的互動。
  • 存取 Shadow DOM 元素,先辨識Shadow Host。
  • 定義一個方法getShadowElement,取得基於Shadow Host的Shadow Root。
  • 使用方法來定位Shadow Tree中的元素。
  • 提供的程式碼是一個JavaScript片段,可以直接定位所需的元素,而不需要多次 Shadow DOM 遍歷。

範例腳本:

driver.get("chrome://settings/clearBrowserData");
driver.manage().window().maximize();
JavascriptExecutor js = (JavascriptExecutor) driver; 
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')");
// perform the desired action on the clearData element
clearData.click();
登入後複製

注意:

由於Markdown 限制,答案源中提供的螢幕截圖未包含在此回應中。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板