Проверка наличия кнопки на странице (WebDriver, C#)

selenium
webdriver
Теги: #<Tag:0x00007fedbfdf8a18> #<Tag:0x00007fedbfdf88d8>

(Andrey) #1

Всем привет!
Друзья, подскажите, пожалуйста, как осуществить проверку наличия кнопки на странице?

Использую WebDriver, пишу на C#

А осуществить необходимо достаточно простую вещь:
запускаю страницу, ищу кнопку, если она есть, то кликаю по ней, а если она отсутствует, то кликаю на другую кнопку.

А элемент вообще ищу так:
var nextChapter = driver.FindElement(By.CssSelector(“div.next.ch”));
nextChapter.Click();


(Andrey) #2

Сделал ожидание так

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20));
IWebElement element = wait.Until(x => x.FindElement(By.CssSelector(“div.next.ch”)));
element.Click();


(Алеся) #3

если вам надо было убедиться, что элемент есть на странице, то можно было использовать driver.FindElement(By.CssSelector(“div.next.ch”))>0


(Aleksandr Grekul) #4

(Сергей Блохин) #5

Можно искать не элемент, а элементы.
Когда мы ищем конкретный элемент, а его нет, мы получаем ошибку/исключение.
Когда мы ищем элементы, то мы получаем количество найденых элементов.
Ниже пример на Ruby.

element = driver.find_element :css, 'button[class="green"]'
Если элемент найден, то в element попадёт первый найденый элемент.

elements = driver.find_elements :css, 'button[class="green"]
Если элементы (пусть даже один) найдены, то в elements попадёт массив найденых элементов.
Если элементов нет, то длина массива elements будет равна нулю.

Что делать дальше, думаю, понятно.


(Oleg Karkachev (Olegeek)) #6

Спасибо, первые две строки вашего сообщения помогли разобраться с ошибкой в c#