【发布时间】: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" 的不可见性。
-
为什么这个问题会被否决。如果您只是在没有任何解释的情况下对问题投反对票,那么提出问题的人不知道要解决什么问题。