selenium - 无法在 chrome 浏览器的设置弹出窗口中找到 Web 元素
问题描述
我正在尝试清除浏览器缓存,为此我需要单击浏览器设置弹出窗口的清除数据按钮,但是,我无法为 chrome 浏览器上的按钮编写 xpath
我已经尝试检查元素以找出按钮是否在 iframe 上但它不在 iframe 中,所以我决定尝试使用没有 iframe 片段的任何一种方式,元素都不会在 dom 中跟踪
public void clearBrowserCache() throws InterruptedException{
driver.get("chrome://settings/clearBrowserData");
Thread.sleep(2000);
System.out.println(driver.getWindowHandles());
String windowIds=driver.getWindowHandle();
// driver.switchTo().frame(windowIds);
driver.findElement(By.cssSelector(
[id=clearBrowsingDataConfirm]")).click();
}
预期是我应该能够单击清除数据按钮实际上是我无法找到元素的 xpath
解决方案
我在另一个问题中回答了如何进入 Shadow DOM 内部。
您可以在链接上阅读整个内容,但基本内容是您通过 JavaScript 在 Shadow DOM 上创建一个“起点”WebElement,然后所有未来的查找都会引用它:
WebElement button = startingPoint.findElement(By.cssSelector("..."));
推荐阅读
- python - Python 3.5 .format() 方法
- javascript - 循环三位数字,其中 product == sum
- android - 带有材质组件的 MapView
- android - 从 Firebase 中的 MainActivity 上传 RecyclerView 的所有数据
- java - 使用 firebaseAuth 创建用户。但是,一旦注册成功,其他设备设备也会受到影响
- azure - OpenTypes 不支持打开导航属性。属性名称:'DirectoryDataService.changePassword'
- javascript - 输入元素将类型切换为隐藏时的奇怪行为
- reactjs - 为什么在上面的例子中我需要'bind(this)'
- html - 如何修复 Mobile-View 的表格?
- c# - LdapException: 无效的 DN 语法 (34) 无效的 DN 语法