【问题标题】:Not able to click and element using Selenium无法使用 Selenium 单击和元素
【发布时间】:2016-09-05 14:42:53
【问题描述】:

我正在尝试自动化“Tableau”登录屏幕和下载报告流程。一切正常,直到我到达“下载”按钮。第一个问题是我无法右键单击“下载”按钮并在 Chrome 中执行“检查”,这很奇怪。我以某种方式能够通过整个页面找到xpath。当我尝试单击它时,我得到“引起:org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“/html/body/div [ 2]/div[2]/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>

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

【问题讨论】:

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

标签: selenium-webdriver


【解决方案1】:

如果您无法右键单击该元素,您仍然可以右键单击页面上的任意位置并选择检查此元素。然后,您可以抓住小双目图标(工具提示消息-选择页面中的一个元素以检查它)并将其指向所需的 Web 元素以检查 xpath。 您需要检查您是否正确编写 xpath 的第一件事。在 chrome 上,你可以在没有任何插件的情况下做到这一点。在开发者窗口(当您选择 Inspect Element 选项时打开的窗口相同),查找 Console 窗口并按如下所述编写您的 xpath,然后按 Enter。

$x("Write x path here")

例如谷歌搜索框的xpath

$x("//input[@id='lst-ib']")

我不确定您为什么要编写绝对 xpath。这是一个不好的做法。您可以以更好的方式为下载按钮编写 x 路径。 例如

(//span[@class='tabToolbarButtonText'])

【讨论】:

    【解决方案2】:

    我遇到了问题。所以看起来我试图自动化的网页使用了框架。这就是为什么即使在提供 xpath 之后元素也没有被点击的原因。我必须使用“switchTo.frame”才能使框架聚焦,然后我才能单击该元素。感谢大家的回复。

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

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 2020-03-20
      • 2018-05-26
      • 2017-10-11
      • 2022-12-09
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多