#python-3.x #selenium-webdriver
#python-3.x #selenium-webdriver
Вопрос:
с помощью пакета selenium для python я хочу: 1. Определить элемент на веб-странице 2. Выберите язык
Я считаю, что представленный ниже HTML-код относится к кнопке, которую я имею в виду:
<ul class="nav navbar-top-links navbar-right">
<li><a>Wersja:6653.606</a></li>
<img src="Img/Flags/32/pl.png">
<li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Wybór języka<span class="caret"></span></a>
<ul class="dropdown-menu dropdown-user">
<li><a href="#"><img src="Img/Flags/16/pl.png" style="margin-right: 10px">pl</a></li>
<li><a href="Language?l=enamp;ReturnUrl=Login?"><img src="Img/Flags/16/en.png" style="margin-right: 10px">en</a></li>
</ul>
</li>
<li><a href="Login"><span class="glyphicon glyphicon-log-in"></span> Logowanie</a></li>
</ul>
Это выпадающий список, в котором представлены два варианта:
- польский язык
- английский язык
Как мне найти этот конкретный объект на веб-сайте (выпадающий список)?
Я думал о чем-то вроде:
select_element = driver.find_element_by_class_name(«выпадающий список-выпадающее меню-пользователь»)
Как мне использовать webbrowser для выбора конкретной опции? (Скажем, английский язык)
Какой-то выбор, но сначала я должен найти элемент.
Спасибо.
Ответ №1:
Мне потребовалось не менее пары часов, чтобы найти решение, но я это сделал :).
Подводя итог:
1. Мне нужно выбрать и щелкнуть список на веб-сайте с выбором языка.
2. Затем мне нужно выбрать и щелкнуть нужный язык.
** Решение: **
— Вы можете найти элемент (например, listbox) с помощью selenium несколькими различными способами:
find_element_by_id, find_element_by_name, find_element_by_xpath, find_element_by_link_text,
find_element_by_partial_link_text
,
find_element_by_tag_name
,
find_element_by_class_name
,
find_element_by_css_selector
Документация: https://selenium-python.readthedocs.io/locating-elements.html
— Я попробовал несколько из них и потерпел неудачу.
Я нашел информацию, что xpath очень надежен, пока кто-нибудь не внесет изменения в html-код веб-сайта.
— У меня 0 знаний html / css и т.д. таким образом, найти xpath было для меня очень сложно.
К счастью, я нашел надстройку для firefox, которая сделала это за меня:
https://github.com/trembacz/xpath-finder
— После установки надстройки я сначала выбрал / нашел xpath для Listbox, затем то же самое для language.
— Код Python для обоих элементов:
#Find Listbox with language selection and click it
select_element = driver.find_element_by_xpath("/html/body/form/div[3]/nav[1]/ul/li[2]/a")
select_element.click()
#Find language inside listbox and click it
select_element = driver.find_element_by_xpath("/html/body/form/div[3]/nav[1]/ul/li[2]/ul/li[2]/a")
select_element.click()
Готово 🙂