Пакет Python Selenium, выбор конкретного языка

#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()
 

Готово 🙂