2014-11-24 56 views
-1

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

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中运行我的测试时,测试将等待一段时间,并显示错误,表示无法找到文本。当我观看测试时,应用程序进入下一页,元素在那里,我想要的文本在那里,但Selenium说它找不到它。我尝试回滚到以前的Firefox版本,但这没有帮助。

  • 版Firefox - 33
  • IE版本 - 11
  • IE驱动器 - 2.44
  • Chrome版本 - 39
  • 铬驱动器 - 2.11
  • Selenium服务器 - 2.44.0.jar
+0

你的代码应该可以工作。这是为什么它不是一个谜。尽管如此,请尝试一件事。 “span标签”必须位于“div”或“a”标签下,实际上它是其父项。因此,制定代码以便从父项中检索innerHTML /文本,然后检查文本**“显示1-10的2100”**的隐藏性。 – Subh 2014-11-25 17:00:01

+0

为什么这个问题有一个downvote。如果您在没有任何解释的情况下只是低估了一个问题,那么提问的人就不知道要解决什么问题。 – TestRaptor 2014-12-02 16:19:16

回答

0

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

相关问题