Дождитесь загрузки страницы в Selenium - PullRequest
216 голосов
/ 03 мая 2011

Как заставить Selenium 2.0 ждать загрузки страницы?

Ответы [ 46 ]

0 голосов
/ 26 декабря 2014

Использование:

driver.manage().timeOuts().implicitlyWait(10, TimeUnit.SECONDS);

Это означает, что любой поиск элементов на веб-странице может занять некоторое время для загрузки. implicitlyWait устанавливается перед выдачей исключения. TimeUnit отображается в зависимости от того, как вы хотите ждать (секунды, минуты, часы и дни).

0 голосов
/ 12 июня 2016

использовать условие if и для любого из присутствующих элементов

try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
0 голосов
/ 06 ноября 2015

Используйте эту функцию

public void waitForPageLoad(ChromeDriver d){
        String s="";
        while(!s.equals("complete")){
        s=(String) d.executeScript("return document.readyState");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        }

    }
0 голосов
/ 06 марта 2017
public static int counter = 0;

public void stepGeneralWait() {

    boolean breakIt = true;

    while (true) {
        breakIt = true;
        try {

            do{
                // here put e.g. your spinner ID
                Controller.driver.findElement(By.xpath("//*[@id='static']/div[8]/img")).click();
                Thread.sleep(10000);

                counter++;

                if (counter > 3){
                    breakIt = false;

                }
            }
            while (breakIt);



        } catch (Exception e) {
            if (e.getMessage().contains("element is not attached")) {
                breakIt = false;
            }
        }
        if (breakIt) {
            break;
        }

    }

    try {
        Thread.sleep(12000);
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}
0 голосов
/ 11 августа 2015

Я не думаю, что вы ожидаете неявного ожидания. Попробуйте это:

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

Больше информации в документации

0 голосов
/ 14 июня 2016

Для неявного ожидания вы можете использовать что-то вроде следующего:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS)

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

//120 is maximum number of seconds to wait.
WebDriverWait wait = new WebDriverWait(driver,120);  
wait.until(ExpectedConditions.elementToBeClickable("CONDITITON"));

В Java другой вариант заключается в том, чтобы приостановить поток в течение определенного времени.

Thread.sleep(numberOfSeconds*1000); 
//This line will cause thread to sleep for seconds as variable

Я создал метод для упрощения метода thread.sleep

public static void wait_time(int seconds){
    try {
        Thread.sleep(seconds*1000);
        }catch (InterruptedException e) {
        // TODO Auto-generated catch block
            e.printStackTrace();
        }
}

Использовать метод как wait_time (10); Поток будет спать 10 секунд.

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