我有一个使用WebDriver 3.5.2
广告ChromeDriver 2.31
的测试套件。
我在Google Chrome
中检查了xpath中的元素,并在testcase中定义了它。我在无头模式下设置ChromeDriver
。
当我执行测试时,我得到了以下错误:
org.openqa.selenium.TimeoutException:预期的条件失败: 等待位于以下位置的元素的存在:By.xpath: // * [@ id =" formA"] / p [1] / label(尝试了30秒,500秒) MILLISECONDS间隔)
如果我从浏览器手动检查,则此xpath存在于网页上。网页会在几秒钟内加载,因此30就足够了。
答案 0 :(得分:1)
尝试使用FluentWait
。将By test =By.xpath("//*[@id="formA"]/p[1]/label")
传递给以下功能
WebElement waitsss(WebDriver driver, By elementIdentifier){
Wait<WebDriver> wait =
new FluentWait<WebDriver>(driver).withTimeout(60, TimeUnit.SECONDS) .pollingEvery(1, TimeUnit.SECONDS).ignoring(NoSuchElementException.class);
return wait.until(new Function<WebDriver, WebElement>()
{
public WebElement apply(WebDriver driver) {
return driver.findElement(elementIdentifier);
}});
}
显式等待代码:
WebDriverWait wait = new WebDriverWait(driver, 60);
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("YOUR LOCTOR")));
希望它会对你有所帮助:)。