我正在尝试自动化“Tableau”登录屏幕并下载报告流程。一切正常,直到我到达“下载”按钮。第一个问题是我无法右键单击“下载”按钮并在Chrome中执行“Inspect”,这很奇怪。我通过浏览整个页面以某种方式找到了xpath。当我尝试单击它时,我得到“引起:org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{”method“:”xpath“,”selector“:”/ html / body / div [ 2] / DIV [2] / DIV / DIV [3] / DIV [4] /跨度[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>
任何帮助将不胜感激。可能是什么原因导致无法“检查”?
答案 0 :(得分:0)
如果您无法右键单击该元素,您仍然可以右键单击页面上的任意位置并选择“检查此元素”。然后,您可以获取小双目图标(工具提示消息 - 选择页面中的元素以进行检查)并将其指向所需的Web元素以检查xpath。 您需要检查是否正确编写xpath。在Chrome上,您可以在没有任何插件的情况下执行此操作。在开发人员窗口(选择Inspect Element选项时打开的同一窗口)中,查找Console窗口并按下面所述编写xpath并按Enter键。
$x("Write x path here")
例如谷歌搜索框的xpath
$x("//input[@id='lst-ib']")
我不确定你为什么写绝对xpath。这是一个不好的做法。您可以更好地编写“下载”按钮的x路径。 e.g。
(//span[@class='tabToolbarButtonText'])
答案 1 :(得分:0)
我遇到了问题。所以我试图自动化的网页似乎使用了框架。这就是为什么即使在提供xpath之后元素也没有被点击。我不得不使用&#39; switchTo.frame&#39;为了使框架成为焦点,然后我能够点击元素。感谢所有回复。
我还没有理解的是,为什么我无法直接检查元素,但这是一个不同的问题。