Выберите из выпадающего списка, используя selenium и python, которые не работают

#python #selenium #selenium-webdriver #drop-down-menu #selenium-chromedriver

Вопрос:

Я пытаюсь разработать скрипт на python, который регистрирует меня на веб-сайте, а затем выбирает проект из выпадающего меню. Я могу войти на веб-сайт, но выбор проекта не работает для меня… Я попробовал несколько вариантов(find_by_id/xpath/visible_text и т. Д.) С и без». нажмите()» или «выберите».

Веб-сайт:

 <select style="font-size: 80%;position:relative; top:-1px;" name="testproject" onchange="this.form.submit();">
<option value="62802146" title="Project" selected="selected">Project</option>
      
 

мой код:

 def login(url,login, username, password, password, submit):
  driver.get(url)
  driver.find_element_by_id(login).send_keys(username)
  driver.find_element_by_id(password).send_keys(password)
  button = driver.find_element_by_xpath("/html/body/div/div[2]/form/div[3]/input").click()
  time.sleep(1)
  selected_project = Select(driver.find_element_by_xpath("/html/body/div[3]/div"))
  selected_project.select_by_value('62802146')
 
 

Редактировать:
Ошибка

Комментарии:

1. можете ли вы поделиться ссылкой на эту страницу?

2. Может быть, это из-за xpath в selected_project . Попробуйте этот xpath : //select[@name='testproject'] (Учитывая, что есть только один select тег с именем testproject ).

3. @Prophet это частный сервер testlink( testlink.org )

4. @pmadhu К сожалению, это решение тоже не работает… При использовании selenium для доступа к раскрывающемуся списку должен ли я видеть, как автоматически нажимается раскрывающийся список и все опции отображаются после, или все происходит в «фоновом режиме»? Потому что по истечении времени ожидания, когда придет время выбора выпадающего списка, ничего не произойдет

5. @TiberiuRoman — Мы должны видеть операцию нажатия в раскрывающемся списке.

Ответ №1:

Это веб-сайт на основе angular, который потребует явного ожидания.

 wait = WebDriverWait(driver, 20)
select = Select(wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "select[onchange*='this.form.submit'][name='testproject']"))))
select.select_by_visible_text('Project')
 

Импорт :

 from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
 

Также я вижу, что вы используете 62802146 значение, выбранное по умолчанию в пользовательском интерфейсе, поэтому вы не видите никаких изменений в раскрывающемся списке с помощью автоматизации браузера, поэтому попробуйте выбрать 2 или 3 варианта, чтобы увидеть существенные изменения.

Комментарии:

1. все еще не работает, я добавил ошибку в основной пост

2. Я знаю, что это URL адрес testlink.org, как мне добраться до этого выпадающего списка ?