3

我的JavaScript的onclick为:在硒锚标签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(); 
} 

但我得到错误的元素是不能点击。

+0

您需要先进行验证,如果it..in这种情况下,其他因素叠加,你应该等到元素,可以点击.. –

+0

是否有可能直接调用函数而不是锚标记ID? –

+0

是的,但这不是正确的测试行为。您需要确定点击的实际问题.. –

回答

1

可能性

  1. 与页面相同的XPath重复的网页元素。
  2. 元素可以在框架中。您需要切换到框架
  3. 试图访问页面加载前的Web元素。给了一些等待时间。

如果一切正常,请尝试通过单击java脚本单击,如片段所示。

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

+0

它显示错误为“a [@ onclick ='Exceldownload(”sites“)']”无效Xpath表达式 –

+0

从“网站”删除双引号,网站。或 WebElement element = driver.findElement(By.xpath(“// a [@ onclick ='Exceldownload(”+“sites”+“)']”)); – Lucky

+0

仍然是错误的无效元素状态 –

1

元素是不能点击

这个问题可以有多种原因如下:

  • 也许就像加载图像叠加一些其他的元素元素和失望元素满载后的耳朵。然后,你应该等到元素是可点击:

    new WebDriverWait(driver, 60).until(
        ExpectedConditions.elementToBeClickable(By.id("download"))).click(); 
    
  • 也许就不存在具有相同定位的多个元素,不幸的是你定位一个隐藏的元素是存在的页面上,但不能点击。那么你需要使用一个独特的定位器。

  • 也许这是由于设计问题而发生的。可能有其他元素覆盖元素并正在接收点击事件。然后你可以使用JavascriptExecutor作为一种替代方案:

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

元素不可点击错误 –

+0

@shreyaS在这种情况下,你有这个错误? –