【问题标题】:Different XPATH in different browsers不同浏览器的XPATH不同
【发布时间】:2017-08-31 15:50:09
【问题描述】:

我有一个测试套件,它使用 WebDriver 3.5.2ChromeDriver 2.31。 我在 xpath 中检查了 Google Chrome 中的元素,并在测试用例中定义了它。我将ChromeDriver 设置为无头模式。

当我执行测试时出现以下错误:

org.openqa.selenium.TimeoutException:预期条件失败: 等待存在的元素位于:By.xpath: //*[@id="formA"]/p[1]/label (用 500 尝试了 30 秒 毫秒间隔)

如果我从浏览器手动检查,则此 xpath 存在于网页上。网页加载几秒钟,所以 30 应该足够了。

【问题讨论】:

  • 你能分享提到的网页的网址吗?
  • @Andersson : 抱歉,只能从内部网络访问。
  • 检查是否有框架存在
  • @ShubhamJain :当我在便携式 Firefox 中执行它并且我知道 xpath 应该相同时,我看不到任何帧并且它正在工作。
  • 尝试take screenshot of pageget outerHTML 的任何div 是目标label 的祖先,以检查它是否真的存在

标签: selenium xpath webdriver selenium-chromedriver


【解决方案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")));

希望对你有帮助:)

【讨论】:

  • 30 秒足以加载此网页。
  • 先尝试60。如果有效,我们将设置阈值。
  • 这个也一样。
  • 我也添加了显式等待的代码.. 尝试一下
  • 是你的xpath在脚本运行后弹出的页面上不同
猜你喜欢
  • 2014-05-28
  • 2011-12-29
  • 2011-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
相关资源
最近更新 更多