【问题标题】:Webdriver - waits not working in FirefoxWebdriver - 等待在 Firefox 中不起作用
【发布时间】:2014-11-24 21:37:40
【问题描述】:

在我的应用程序中,我在屏幕上显示了一个记录元素。所以在第一页上,它会说“显示 1-10 of 2100”。这是该元素的 CSS,它适用于所有浏览器。

span.GridPagingInfo

在 iframe 中的应用程序中,我需要更改页面并等待页面加载后才能继续。我之前提到的元素是页面上的最后一个元素,所以我将其用于等待。由于它在底部,如果它被显示,那么我需要继续我的测试的信息就会被加载。

当我更改页面时,该元素的文本会更改。所以如果我转到第二页,它会说“显示 2100 的 11-20”。在继续我的测试之前,我正在等待文本更改。下面是我正在使用的代码

//verify text of the element
  String actualText = driver.findElement(By.cssSelector("span.GridPagingInfo")).getText();
  Assert.assertEquals(actualtext, "displaying 1-10 of 2100");
//Go to next page by clicking the Next button
  driver.findElement(By.cssSelector("th.GridPaging button.ViewMore")).click();
//wait for text of the element to change
  WebDriverWait wait = new WebDriverWait(driver,30);
  wait.until(ExpectedConditions.textToBePresentInElementLocated(By.cssSelector("span.GridPagingInfo"), "displaying 11-20 of 2100"));

我也试过

wait.until(ExpectedConditions.invisibilityOfElementWithText(By.cssSelector("span.GridPagingInfo"), "displaying 1-10 of 2100"));

当我尝试这个时,它适用于除 Firefox 之外的所有浏览器。当我在 Firefox 中运行测试时,测试将在等待时超时,并显示一个错误,指出它找不到文本。当我观看测试时,应用程序转到下一页,元素在那里,我想要的文本在那里,但是 Selenium 说它找不到它。我曾尝试回滚到以前版本的 Firefox,但这并没有帮助。

  • 火狐版本 - 33
  • IE 版本 - 11
  • IE 驱动程序 - 2.44
  • Chrome 版本 - 39
  • Chrome 驱动程序 - 2.11
  • Selenium 服务器 - 2.44.0.jar

【问题讨论】:

  • 您的代码应该可以工作。为什么不是这样,这是一个谜。不过,请尝试一件事。 “span 标签”必须位于“div”或“a”标签下,这实际上是它的父标签。因此,制定代码以便从父级检索 innerHTML/文本,然后检查其中文本 "displaying 1-10 of 2100" 的不可见性。
  • 为什么这个问题会被否决。如果您只是在没有任何解释的情况下对问题投反对票,那么提出问题的人不知道要解决什么问题。

标签: java firefox selenium


【解决方案1】:

我不知道为什么这解决了这个问题,但这就是我所做的。我刚刚将超时时间从 30 更改为 45,一切正常。在 Firefox 中,页面在一秒钟内加载,所以我不知道为什么它在 30 之后超时。无论如何,更改为 45 解决了 Firefox 中的问题。

【讨论】:

    猜你喜欢
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2023-03-05
    • 1970-01-01
    • 2013-11-15
    • 2018-09-07
    • 2014-05-20
    相关资源
    最近更新 更多