Webdriver未能在WebDriverWait之后单击元素

时间:2016-01-08 20:06:36

标签: java selenium selenium-webdriver webdriver

首先,我遇到的问题是selenium webdriver并不总是找到元素并单击,我发现WebDriverWait应该解决问题。所以,我使用了这段代码,例如:

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("html/body/div[1]/aside/div/nav/ul/li[3]/a"))).click();

但是现在我遇到超时问题,观察要运行的测试,我可以看到该元素正在悬停(因为它改变了颜色),但是webdriver没有点击。

有没有人有关于如何解决这个问题的提示?

2 个答案:

答案 0 :(得分:0)

我建议像这样重构,将等待与click事件分开。否则,很难诊断点击失败的原因:

WebDriverWait wait = new WebDriverWait(driver, 20);
By locator = By.xpath(".//ul/li[3]/a");
WebElement we = wait.until(ExpectedConditions.visibilityOfElementLocated(locator))
   .ignoring(NoSuchElementException.class);
try {
   we.click();
} catch (WebDriverException wde)
{
   LOGGER.info("Click failed.", wde);
}

答案 1 :(得分:0)

等待,然后尝试JavascriptExecutor点击你的元素

WebElement element= driver.findElement(YOUR Locator);

JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click();", element);

希望它会对你有所帮助:)。