WebDriver,Selenium2 - 简单测试失败

时间:2011-11-03 13:48:57

标签: webdriver selenium-webdriver

我尝试这个测试:

@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?

2 个答案:

答案 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)

也许带有搜索结果的页面尚未加载 - 尝试在运行断言前等待几秒钟。