我尝试这个测试:
@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”
如何修改测试以获得SUCCESS?
答案 0 :(得分:1)
您必须使用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() + "\"");
}
});
}
答案 1 :(得分:0)
也许带有搜索结果的页面尚未加载 - 尝试在运行断言前等待几秒钟。