在selenium中锚点标签onclick功能不起作用?

时间:2017-02-13 09:46:41

标签: javascript selenium selenium-webdriver automated-tests selenium-chromedriver

我有javascript onclick:

<a href="#" id="download" onclick="Exceldownload('sites')">
    <i class="fa fa-download card-down-icon" aria-hidden="true"></i>
</a>

在硒中,我这样添加:

public void x() {
    driver.findElement(By.xpath("//a[@onclick='Exceldownload("sites")']")).click();
}

但由于元素无法点击,我收到错误。

2 个答案:

答案 0 :(得分:1)

可能性

  1. 页面中具有相同xpath的重复Web元素。
  2. 元素可能在框架中。您需要切换到框架
  3. 尝试在加载页面之前访问web元素。给予一些等待时间。
  4. 如果一切正确,请尝试点击java脚本点击,如代码段所示。

    WebElement element =driver.findElement(By.xpath("//a[@onclick='Exceldownload("sites")']"));
    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("arguments[0].click();", element);

答案 1 :(得分:1)

  

元素无法点击

此问题可能有多种原因,如下所示:

  • 也许像加载图像这样的其他元素会覆盖元素,并在元素完全加载后消失。然后你应该等到元素可点击:

    new WebDriverWait(driver, 60).until(
        ExpectedConditions.elementToBeClickable(By.id("download"))).click();
    
  • 也许同一个定位器存在多个元素,不幸的是,您正在查找页面上但不可点击的隐藏元素。然后你需要使用一个独特的定位器。

  • 可能是由于设计问题而发生的。可能有一些其他元素覆盖元素并且正在接收click事件。然后,您可以使用JavascriptExecutor作为替代解决方案:

    ((JavascriptExecutor)driver).executeScript(
        "arguments[0].click();", driver.findElement(By.id("download")));