Selenium Webdriver с использованием isDisplayed() не работает

#c# #selenium #selenium-webdriver

Вопрос:

Цель: проверить, существует ли элемент на странице, если да, продолжите тест, если он не показывает ошибку, и остановите тест.

 Boolean Display = Driver.FindElement(By.CssSelector(".mat - select")).isDisplayed();  

Ошибка CS1061 «IWebElement» не содержит определения для «isDisplayed», и не удалось найти доступный метод расширения «isDisplayed», принимающий первый аргумент типа «IWebElement» (у вас отсутствует директива using или ссылка на сборку?)

 Boolean Display = Driver.FindElement(By.CssSelector(".mat - select")).Displayed();  

Ошибка CS1955 Не вызываемый элемент «IWebElement.Отображаемый» не может использоваться как метод.

Я буду благодарен вам за помощь!

Ответ №1:

В C# Selenium нет никакого isDisplayed() метода. Также Displayed является свойством, а не методом.
Так что вместо

 Boolean Display = Driver.FindElement(By.CssSelector(".mat - select")).isDisplayed();  

Попробуйте использовать

 Boolean Display = Driver.FindElement(By.CssSelector(".mat - select")).Displayed;  

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

1. Спасибо за ваш ответ, если я правильно понимаю: если элемент будет найден на странице, тест будет продолжен, если на странице нет элемента, будет ли тест завершен? Это также относится к полям или только к текстовым элементам?

2. Я бы не рекомендовал использовать эту логику. Гораздо предпочтительнее использовать ожидаемые условия для ожидания присутствия или видимости элемента. Вы можете потерпеть неудачу в ситуации, когда вы поймаете этот веб-элемент, пока он еще не полностью визуализирован, поэтому он будет соответствовать вашему локатору, но все равно не будет виден.

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