Selenium点击并不总是有效

我有一些点击选项卡的测试,但并不总是执行点击。

  • xpath在测试工作的大部分时间都是正确的

  • 这不是一个计时问题,因为我使用thread.sleep()和其他方法来确保元素在单击之前可见

  • 测试认为它正在执行点击,因为它不会在“执行”点击时抛出ElementNotFoundException或任何其他exception。 由于选项卡内容不会更改,因此稍后在单击后测试失败。

进一步的信息我使用Selenium 2.44.0来实现在Chrome 44.0.2403.107 m上运行的Java测试。

我还能做些什么,或者这可能成为selenium的问题?

您可以尝试以下几种方法:

  • 一个明确的elementToBeClickable等待:

     WebDriverWait wait = new WebDriverWait(webDriver, 10); WebElement button = wait.until(ExpectedConditions.elementToBeClickable(By.id("myid"))); button.click() 
  • 在点击之前移动到元素:

     Actions actions = new Actions(driver); actions.moveToElement(button).click().build().perform(); 
  • 通过javascript进行点击:

     JavascriptExecutor js = (JavascriptExecutor)driver; js.executeScript("arguments[0].click();", button); 

如果选项卡名称包含任何唯一字符串,则可以使用linkText 。 并确保您的标签不是动态的。 它应该在源代码中可见(手动源代码( ctrl+u ))。