硒点击并不总是有效

我有一些测试点击一个标签,但点击并不总是执行。

  • xpath 是正确的,因为大多数时候测试都有效

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

  • 该测试认为它正在执行单击,因为它在“执行”单击时不会引发ElementNotFoundException或任何其他异常。测试在单击后稍后失败,因为选项卡内容不会更改。

更多信息 我正在使用Selenium 2.44.0在Java中实现在Chrome 44.0.2403.107 m上运行的测试。

我还可以做其他事情,或者这可能是硒的问题吗?


答案 1

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

  • 显式等待: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);
    

答案 2

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