2011-11-03 94 views
1

我试试这个测试:webdriver的,Selenium2 - 简单的测试失败

@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")); 
} 

,但得到了一个错误:

Failure, Expected: a string containing "cats" got: "Google"

我怎样才能修改测试有成功?

回答

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() + "\""); 
     } 
    }); 
}