我试着做这个测试:
@Test
public void theUserShouldBeAbleToTypeInQueryTerms() {
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
WebElement queryField = driver.findElement(By.name("q"));
queryField.sendKeys("cats");
queryField.submit();
assertThat(driver.getTitle(), containsString("cats"));
}但有个错误:
失败,预期:一个包含“猫”的字符串得到:"Google“
如何修改测试以获得成功?
发布于 2011-11-03 19:37:53
也许包含搜索结果的页面还没有加载--试着在运行断言之前等待几秒钟。
发布于 2011-11-05 04:47:26
您必须使用WebDriverWait类。它将等到标题等于“猫”或超时。下面是它如何工作的一个示例(但您必须为您的情况调整代码):
public static void waitForTitle(final PageTitle title, WebDriver driver) {
new WebDriverWait(driver, TestDriver.WAIT_TIMEOUT).until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
for (WebElement we : PageHelper.findElements(WebElementLocator.pageHeader, driver)) {
if (we.getText().equals(title.getValue())) {
return we;
}
}
throw new NoSuchElementException("Title not found: \"" + title.getValue() + "\"");
}
});
}https://stackoverflow.com/questions/7995975
复制相似问题