Невозможно поймать TimeOutException со страницы pageLoadTimeout и обновить страницу с помощью Selenium Java FireFox Driver

У меня проблема с драйвером Selenium Firefox, из-за которого иногда какое-то объявление Google застревает при загрузке. Я могу обойтись без этого, просто нажав кнопку обновления, и страница загрузится полностью, я могу прочитать нужные мне данные и перейти на следующую страницу. Если я не нажму кнопку «Обновить» вручную, в конечном итоге произойдет тайм-аут с тайм-аутом по умолчанию, но это займет несколько минут.

Это, конечно, не идеально, и я надеялся, что смогу справиться с этим сценарием автоматически.

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

    FirefoxDriver driver = new FirefoxDriver();
    WebDriverWait wait = new WebDriverWait(driver, 30);
    FixturesDataStore fixtures = new FixturesDataStore();
    driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

    for(int i = 0; i < fixtures.getHomeTeams().size(); i++)
    {
        try
        {
        driver.navigate().to(FORMURL.concat( (fixtures.getHomeTeams().get(i)).replace( ' ', '+' )));
        }catch(WebDriverException e)
        {
            System.out.println("What a catch!!");
            driver.navigate().refresh();
        }

Ошибка:

Exception in thread "main" org.openqa.selenium.TimeoutException: Timeout loading page after 10000ms

Он выделяет линию

driver.navigate().refresh();

как вызывающий ошибку.


person Deane Kane    schedule 26.08.2019    source источник
comment
10000 мс - это 10 с ... как получить время ожидания от 10 до, но это занимает несколько минут?   -  person JeffC    schedule 26.08.2019
comment
Если я не нажму кнопку «Обновить» вручную, в конечном итоге произойдет тайм-аут с тайм-аутом по умолчанию, но это займет несколько минут. Это было до того, как я установил время ожидания, отсюда и слово по умолчанию. Я настраивал сцену того, что происходило и чего пытался достичь. Если вы читаете, я четко заявляю, что пытался вручную изменить время ожидания в рамках своего решения.   -  person Deane Kane    schedule 27.08.2019


Ответы (1)


Результат вполне соответствует ожиданиям и соответствует спецификациям.

Это сообщение об ошибке ...

Exception in thread "main" org.openqa.selenium.TimeoutException: Timeout loading page after 10000ms

... это результат pageLoadTimeout(), который вы настроили как:

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

Для подробного анализа причины исключения всегда можно отловить WebDriverException. Подробное обсуждение можно найти в pageLoadTimeout в Selenium not working.


Outro

Как заставить селен перезагружать нужный URL, если загрузка занимает слишком много времени

person DebanjanB    schedule 26.08.2019
comment
@DeaneKane Рад, что смог вам помочь. Проголосуйте за ответ, если этот / любой ответ / был / был полезен для вас в интересах будущих читателей. - person DebanjanB; 30.08.2019