Python+Webdriver. Как провеить что елемент содержит атрибут,

Подскажите как должен выглядеть assert для проверки того, что элемент HTML содержит атрибут. Зачение атрибута я умею проверять. Но в данном случае значение меня не интересует. Только наличие лемента.

<input class="details-form-date-from" id="details-form-date-from" name="csf[date_from]" type="hidden" value="17/07/18">

Нужен ассерт, проверяющий что у элемента с id="details-form-date-from" есть атрибут value.

Заранее благодарен за помощь.

В XPath можно задавать критерием для поиска наличие определенного атрибута без указания его значения в формате [@attribute_name].
Т.е. локатор

//input[@id="details-form-date-from"][@value]

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

Если не хотите через локаторы, вот тут советуют работать через getAttribute , обрабатывая исключение, возникающее если атрибута нет.

1 лайк

Ну пилить локатор ради одной проверки - не комильфо) Лучше уж получать атрибуты и дальше проверять. Плюс если вы пилите локатор будьте готовы ждать таймаут поиска, даже если он кастомный в 2-3 секунды для этого случая - тоже не айс.

+1 за “get_attribute” (python docs - 7. WebDriver API — Selenium Python Bindings 2 documentation)