不同浏览器中不同的XPATH

时间:2017-08-30 12:34:46

标签: selenium xpath webdriver selenium-chromedriver

我有一个使用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就足够了。

1 个答案:

答案 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")));

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