WebDriver, Selenium2 - простой тест не пройден - PullRequest
1 голос
/ 03 ноября 2011

Я пробую этот тест:

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

, но получил ошибку:

Ожидается сбой: строка, содержащая "cats", получила: "Google"

Как я могу изменить тест, чтобы получить УСПЕХ?

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

Вы должны использовать класс 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() + "\"");
        }
    });
}
0 голосов
/ 03 ноября 2011

Возможно, страница с результатами поиска еще не загружена - попробуйте подождать несколько секунд, прежде чем выполнить утверждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...