Selenium 无法在chrome浏览器上找到web元素';s设置弹出窗口

Selenium 无法在chrome浏览器上找到web元素';s设置弹出窗口,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我正在尝试清除浏览器缓存,为此我需要单击浏览器设置弹出窗口中的“清除数据”按钮,但是,我无法在chrome浏览器上为该按钮编写xpath 我曾尝试检查元素,以确定按钮是否位于iframe上,但不在iframe中,因此我决定使用一个不带iframe的片段来尝试它,无论哪种方式,元素都不会在dom中被跟踪 public void clearBrowserCache() throws InterruptedException{ driver.get("chrome://settings

我正在尝试清除浏览器缓存,为此我需要单击浏览器设置弹出窗口中的“清除数据”按钮,但是,我无法在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();

    }
期望的是,我应该能够点击清除数据按钮
实际情况是,我无法找到EmElement的xpath,具体取决于您使用的chrome版本,这可能会起作用:

driver.findElement(By.cssSelector("* /deep/ #clearBrowsingDataConfirm")).click();

但是,
/deep/
combinator已被弃用,因此它可能无法在较新的Chrome版本上工作。

根据您使用的Chrome版本,这可能会起作用:

driver.findElement(By.cssSelector("* /deep/ #clearBrowsingDataConfirm")).click();

但是,
/deep/
combinator已被弃用,因此它可能无法在较新的Chrome版本上工作。

我回答了如何以一种新的方式进入阴影DOM

您可以在链接中阅读整个内容,但基本的是您通过JavaScript在Shadow DOM中创建一个“起点”WebElement,然后所有将来的查找都会引用它:

WebElement button = startingPoint.findElement(By.cssSelector("..."));

我回答了如何在黑暗中到达DOM内部

您可以在链接中阅读整个内容,但基本的是您通过JavaScript在Shadow DOM中创建一个“起点”WebElement,然后所有将来的查找都会引用它:

WebElement button = startingPoint.findElement(By.cssSelector("..."));

您正在处理阴影根元素。请参阅此问题:。是否确实要切换到正确的句柄?如果我是你,我会在“清除浏览数据”之前获得句柄,并确保你没有切换到错误的句柄。当你打印出窗口句柄时,它说了什么?@DynamicSwarmi我试过打印getWindowHandles,它只打印一个窗口ID,当DOM没有任何Iframes时,你处理的是阴影根元素。请参阅此问题:。是否确实要切换到正确的句柄?如果我是你,我会在“清除浏览数据”之前获得句柄,并确保你没有切换到错误的句柄。当你打印出窗口句柄时,它说了什么?@DynamicSwarmi我试过打印getWindowHandles,它只打印一个窗口ID,更多的是当DOM没有任何Iframesh时。你是对的,我最新版本的chrome[74]不能使用这个“*/deep/#clearBrowsingDataConfirm”您好,你是对的,我最新版本的chrome[74]无法使用此“*/deep/#clearBrowsingDataConfirm”