Selenium webdriver 无法使用Selenium单击和删除元素

Selenium webdriver 无法使用Selenium单击和删除元素,selenium-webdriver,Selenium Webdriver,我正在尝试自动化“Tableau”登录屏幕和下载报告流。在我按下“下载”按钮之前,一切正常。第一个问题是我不能右键点击下载按钮并在Chrome中进行“检查”,这很奇怪。我可以通过浏览整个页面找到xpath。当我尝试单击它时,我得到了“起因:org.openqa.selenium.NoSuchElementException:没有这样的元素:找不到元素:{“方法”:“xpath”,“选择器”:/html/body/div[2]/div[2]/div/div/div[3]/div[4]/span[1

我正在尝试自动化“Tableau”登录屏幕和下载报告流。在我按下“下载”按钮之前,一切正常。第一个问题是我不能右键点击下载按钮并在Chrome中进行“检查”,这很奇怪。我可以通过浏览整个页面找到xpath。当我尝试单击它时,我得到了“起因:org.openqa.selenium.NoSuchElementException:没有这样的元素:找不到元素:{“方法”:“xpath”,“选择器”:/html/body/div[2]/div[2]/div/div/div[3]/div[4]/span[1]“}”

我使用的代码如下所述:

String xPath = "/html/body/div[2]/div[2]/div/div[3]/div[4]/span[1]";

    (new WebDriverWait(driver, 20))
       .until(ExpectedConditions.elementToBeClickable(By.xpath(xPath)));

    driver.findElement(By.xpath(xPath)).click();
页面布局是这样的,我从中选择xpath

    <div class="tabToolbarButton tab-widget" style="-webkit-user-select: none; -webkit-tap-highlight-color: transparent; width: 77.4px;">
<span class="tabToolbarButtonImg tab-icon-download"></span>
<span class="tabToolbarButtonText">Download</span></div>
<span class="tabToolbarButtonImg tab-icon-download"></span>
<span class="tabToolbarButtonText">Download</span>
    </div>

下载
下载

任何帮助都将不胜感激。无法“检查”的原因可能是什么

如果不能右键单击元素,仍然可以右键单击页面上的任意位置并选择“检查此元素”。然后,您可以抓取小的双目图标(工具提示消息选择页面中的一个元素以检查它),并将其指向所需的web元素以检查xpath。 首先需要检查您是否正确编写xpath。在chrome上,无需任何插件即可实现这一点。在开发人员窗口(选择Inspect Element选项时打开的同一窗口)上,查找Console窗口,按照下面提到的方式编写xpath,然后按Enter键

$x("Write x path here")
例如,用于谷歌搜索框的xpath

$x("//input[@id='lst-ib']")
我不知道你为什么要写绝对xpath。这是个坏习惯。您可以更好地为下载按钮编写x路径。 e、 g


如果不能右键单击元素,仍然可以右键单击页面上的任意位置并选择“检查此元素”。然后,您可以抓取小的双目图标(工具提示消息选择页面中的一个元素以检查它),并将其指向所需的web元素以检查xpath。 首先需要检查您是否正确编写xpath。在chrome上,无需任何插件即可实现这一点。在开发人员窗口(选择Inspect Element选项时打开的同一窗口)上,查找Console窗口,按照下面提到的方式编写xpath,然后按Enter键

$x("Write x path here")
例如,用于谷歌搜索框的xpath

$x("//input[@id='lst-ib']")
我不知道你为什么要写绝对xpath。这是个坏习惯。您可以更好地为下载按钮编写x路径。 e、 g


我有问题。因此,我试图自动化的网页似乎使用了框架。这就是为什么即使提供了xpath,元素也没有被点击。我必须使用“switchTo.frame”来获得焦点,然后我才能单击元素。谢谢你的回复


我仍然不明白的是,为什么我不能直接检查元素,但这是一个不同的问题

我有问题了。因此,我试图自动化的网页似乎使用了框架。这就是为什么即使提供了xpath,元素也没有被点击。我必须使用“switchTo.frame”来获得焦点,然后我才能单击元素。谢谢你的回复


我仍然不明白的是,为什么我不能直接检查元素,但这是一个不同的问题

要单击第一个跨距,请将其用作cssSelctor并检查发生了什么div.tabToolbarButton.tab-widget>span.tabToolbarButtonImg.tab-icon-download要单击第一个跨距,请将其用作cssSelctor并检查发生了什么div.tabToolbarButton.tab-widget>span.tabToolbarButtonImg.tab-icon-download