#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, как мне добраться до этого выпадающего списка ?