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

xpath
locators
python
webdriver
Теги: #<Tag:0x00007fedc03acfe0> #<Tag:0x00007fedc03acdd8> #<Tag:0x00007fedc03aca18> #<Tag:0x00007fedc03ac860>

(Ivan Pletin) #1

Подскажите как должен выглядеть 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.

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


(rpwheeler) #2

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

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

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

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


(Maxim Andryushchenkov) #3

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


(Rostyslav Simchuk) #4

+1 за “get_attribute” (python docs - https://selenium-python.readthedocs.io/api.html?highlight=get_attribute#selenium.webdriver.remote.webelement.WebElement.get_attribute)