首页 >Java >java教程 >如何使用 Selenium 与 Chrome 的'清除浏览数据”Shadow DOM 元素交互?

如何使用 Selenium 与 Chrome 的'清除浏览数据”Shadow DOM 元素交互?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-28 01:20:15439浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn