t.me/atinfo_chat Telegram группа по автоматизации тестирования

Ожидания в Selenium WebDriver на C#


(Alex.The.Test) #1

Доброго времени суток, друзья - автоматизаторы!

Совсем недавно я начал заниматься написанием автотестов для веб - приложений.

Для этого была выбрана следующая схема - C# + WebDriver + NUNit + Specflow. Приложение сложное, много асинхронных вещей.

Соответственно столкнулся с довольно распространенной проблемой - ожидание появление определенного элемента на странице. Почитав про Advanced User Interactions, я попробовал применять оба вида ожиданий в ВебДрайвере - как driver.Manage().Timeouts(), так и работая с классом WebDriverWait. 

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

Таймауты выставлял довольно большие.

Подводя итог хочу задать следующий вопрос: как правильно пользоваться ожиданиями в ВебДрайвере (используя C#)? Желательно привести пример конкретного (работающего)  использования в коде.

Заранее благодарен за ответ.

 


(Mykhailo Poliarush) #2

а вы исследовали в каких точках обычно падают ваши тесты? может быть там какая-то хитрая логика.

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

т.е. когда нужно поставить таймауты на все действия, то использую driver.Manage().Timeouts()

а когда нужно сделать точечное ожидание, то использую класс WebDriverWait с ExpectedConditions

new WebDriverWait(driver, 30).until(ExpectedConditions.presenceOfElementLocated(By.id("h1")));

 

в общем, вам надо разобраться, где именно происходят ваши задержки, как они проявляются и какое идеальное время таймаута необходимо установить, чтобы тесты проходили

это делается больше эксперементальным путем нежели, с помощью каких-то общих выведенных правил.

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