понедельник, 22 июля 2013 г.

Selenium: настройка driverTimeout

      При выполнении теста Webdriver выполняет все команды последовательно, не дожидаясь окончания выполнения предыдущей. Например, нажали на какую-нибудь кнопку на странице, в результате должно появиться новое поле, в которое нужно что-то ввести, но из-за асинхронной работы Webdriver команда работы с этим полем выполняется раньше, чем оно успевает появиться. Из-за этого тест может возвращать ошибку, что элемент не найден.

      Чтобы избежать этой ошибки можно каждый раз проверять наличие элемента на странице. Для этого придется использовать цикл и периодически вызывать метод findElement. Очевидно, что писать циклы для проверки наличия элемента перед выполнением каждой команды очень неудобно. К счастью, у Webdriver есть возможность задавать неявные ожидания.

      Значение неявного ожидания можно задать всего один раз, и потом Webdriver каждый раз перед выполнением команды будет пытаться найти элемент. Если же в течение указанного времени элемент не появится, то получим исключение NoSuchElementException.

       int driverTimeout = 15;
       driver.manage().timeouts().implicitlyWait(driverTimeout, TimeUnit.SECONDS);


      Включать и отключать неявное ожидание, а также менять время ожидания, можно в любой момент.

Комментариев нет:

Отправить комментарий