Как проверить наличие элемента (if…exist) без вызова исключения/ошибки (Selenium WebDriver, C#)

Как проверить наличие элемента (if...exist) без вызова исключения/ошибки (Selenium WebDriver, C#)
В процессе написания автоматических тестов, с использованием Selenium WebDriver, появилась необходимость проверять наличие элемента на странице и, если элемент не существует, выполнять одни действия, если существует, то выполнять другие действия. К примеру, сейчас я работаю в сфере туристического бизнеса. При проверке функциональности сайта надо перейти в определённый тур и если есть билеты на текущее число (и кнопка «Бронировать»), то произвести заказ, если нету, то надо вернуться назад и выбрать другой тур. И так до тех пор, пока не будет найден тур, по которому можно осуществить заказ.

Если нам надо провести проверку наличия элемента на странице, то мы можем написать код:

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

Раздумывая над этим, я подумал о том, что исключения в коде мы обрабатываем с помощью «try – catch». Через определённое время было найдено решение, которое позволило проверять наличие элемента на странице и не прерывать теста, так как отсутствие элемента естественное состояние проверемой системы в определённых случаях и условиях. Если кратко, то в условии «if» мы будем проверять «true» или «false» нам возвращает функция, которая ищет элемент на странице.

Пишем метод, который обращается на странице к элементу, и которая возвращает «true» (элемент есть) или «false» (элемента нет):

Строка 5 — ищем элемент.
Строка 6 — если находим элемент, то метод возвращает «true» (return true;).
Строка 10 — если не находим элемент, то метод возвращает «false» (return false;).

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

Строка 2 — вызываем метод передавая в метод «By.Id» элемента и сравниваем возвращаемый методом результат с «true», т.е. есть ли элемент. В метод можно передавать «By.Id», «By.ClassName» и т.д.
Остальное понятно по комментариям в коде.

Selenium WebDriver вроде прост и удобен, но некоторые вещи надо реализовывать самому, как в описанном мною случае на проверку существования элемента (IF … EXIST в Selenium WebDriver нет).

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

  • Понравилось? Добавьте в избранное или поделитесь с друзьями:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *