Как мне ждать загрузки страницы после отправки формы в Webdriver.Я использую драйвер Firefox - PullRequest
8 голосов
/ 30 мая 2011

Я пытаюсь автоматизировать тестовый случай, в котором я отправляю форму, щелкая изображение.

После перезагрузки страницы я не могу взаимодействовать ни с одним элементом на веб-странице

Я использую java, драйвер firefox.

Код застревает и вообще не может идентифицировать элемент.

Есть ли какой-либо механизм ожидания с веб-драйвером, как с QTP, селен?

Ответы [ 5 ]

4 голосов
/ 15 февраля 2013

2 года спустя, реализация ruby:

wait = Selenium::WebDriver::Wait.new(:timeout => 10)
wait.util {
  @driver.execute_script("return document.readyState;") == "complete" 
}
3 голосов
/ 13 сентября 2011

Просто используйте FluentWait класс:

/**
 * An implementation of the {@link Wait} interface that may have its timeout
 * and polling interval configured on the fly.
 *
 * <p>Each FluentWait instance defines the maximum amount of time to wait for
 * a condition, as well as the frequency with which to check the condition.
 * Furthermore, the user may configure the wait to ignore specific types of
 * exceptions whilst waiting, such as
 * {@link org.openqa.selenium.NoSuchElementException NoSuchElementExceptions}
 * when searching for an element on the page.
 *
 * <p>Sample usage:
 * <code><pre>
 *   // Waiting 30 seconds for an element to be present on the page, checking
 *   // for its presence once every 5 seconds.
 *   Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
 *       .withTimeout(30, SECONDS)
 *       .pollingEvery(5, SECONDS)
 *       .ignoring(NoSuchElementException.class);
 *
 *   WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
 *     public WebElement apply(WebDriver driver) {
 *       return driver.findElement(By.id("foo"));
 *     }
 *   });
 *

или WebDriverWait .

0 голосов
/ 07 марта 2012
for (int second = 0;; second++) {
            if (second >= 60) fail("timeout");
            try { if (isElementPresent(By.linkText("element"))) break; } catch (Exception e) {}
            Thread.sleep(1000);
        }
0 голосов
/ 24 июня 2011

Я думаю, что с селеном 2 вам не нужно ждать отправки формы с помощью веб-драйвера Firefox.

     element.sendKeys("34344343");
     webDriver.findElement(By.id("searchSubmitButton")).click();

WebElement columnInPostedPage =  webDriver.findElement(By.xpath("//div[@id='content']/table/tbody/tr[2]/td[3]")); //

Если контент загружается с помощью javascript после загрузки страницы, вы можете сделать что-то подобное для контента

     query.submit();

    long end = System.currentTimeMillis() + 5000;
    while (System.currentTimeMillis() < end) {
        WebElement result = webDriver.findElement(By.id("content"));
        if (result.isDisplayed()) {
          break;
        }
        //Thread.sleep(1000);
    }        

     WebElement columnInPostedPage =  webDriver.findElement(By.xpath("//div[@id='content']/table/tbody/tr[2]/td[3]")); //
0 голосов
/ 30 мая 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...