首先,我遇到的问题是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没有点击。
有没有人有关于如何解决这个问题的提示?
答案 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);
希望它会对你有所帮助:)。