Начинаю осваивать автоматизированное тестирование, и столкнулся с проблемой. Не могу понять, как правильно работать с find_elements на python.
Как пример, имеем страницу http://www.alfastrah.ru/individuals/auto/kasko/calc/
Нужно кликнуть по марке автомобиля. Но указание куда кликать надо задать не конкретную ссылку, а чтобы ссылка выбиралась из списка find_elements.
Я попытался сделать так
marka = “AUDI”
def auto_marka_select(self, marka):
list = self.driver.find_elements_by_xpath('/html/body/div[1]/div/div/div[2]/div[4]/div[1]/div[4]/div[1]')
for auto in list:
if auto.text == marka:
auto.click()
break
else:
print('Такой марки авто нет: '+marka)
Был бы Вам признателен, если бы Вы подсказали, в каком месте у меня ошибка.
PS не обращайте внимания на такой корявый xpath — к сожалению, я еще не постиг этот дзен
Наверно имелось виду использовать для поиска такой XPATH .//a[contains(text(),‘AUDI’)] А Ваш XPATH не возвращает список элементов кстати, он вернет 1-у запись - это общий div в котором находяться эти марки.
раскрываем полностью список - b-kasko__more-makers b-link b-link_dotted js-toggle-block или ищем по имени ссылки, или через атрибут какой-либо. Кликаем.
находим начальный тег всего списка - b-alphabet-list.
У списка ищем ссылку которая имеет текст который вам нужно найти (link_text). Более хуже вариант, ищем все теги A, и по очереди спрашиваем текст атрибут, и поочередно сравниваем с вашим названием. Вообще вызов функции в цикле, это плохая практика, лучше тогда использовать filter, по отношению к листу возвращенных елементов
Дзен познавать не нужно, просто не используйте такой длиннющий Xpath, потому что он очен не очевиден и больно бьет по глазам.