2016-02-07 2 views
2

Я пробовал много вещей, которые, похоже, не могут заставить его работать, поэтому я публикую этот вопрос, чтобы, надеюсь, изучить простой метод выбора из выпадающего меню в python ,Как выбрать значение из выпадающего списка в python

Мне удается открыть раскрывающееся меню, но как я могу выбрать значение (скажем, 4 в этом примере) из раскрывающегося списка?

Ниже приведен код, который открывает выпадающий:

#select adults 
adults = driver.find_element_by_xpath("//*[@id='adults-number']").click() 

Ниже HTML, который состоит из всех вариантов в раскрывающемся списке (подсвеченное значение, которое я хочу выбран):

enter image description here

ответ

2

Используйте Select class и это .select_by_visible_text() метод:

from selenium.webdriver.support.select import Select 

adults = Select(driver.find_element_by_id("adults-number")) 
adults.select_by_visible_text("4") 

Обратите внимание, что я также заменил «by xpath» на более простой и эффективный тип «по идентификатору».

Рабочий код (используя целевой сайт), чтобы выбрать для взрослых = 4:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.support.select import Select 
from selenium.webdriver.support.wait import WebDriverWait 

driver = webdriver.Chrome() 
driver.get("http://jet2.com") 

wait = WebDriverWait(driver, 10) 
adults_element = wait.until(EC.presence_of_element_located((By.ID, "adults-number"))) 

select = Select(adults_element) 
select.select_by_visible_text("4") 
+0

Нет кости, приходит с ошибкой о том, хром окно не определено. Я пробовал это раньше (с id и xpath) с документами, которые вы предоставили мне раньше, но не работает странно. Это на самом деле следует за щедростью, где пытаются выбрать взрослых. – BruceyBandit

+0

@BruceyBandit хорошо, позвольте мне немного поэкспериментировать. Благодарю. – alecxe

+0

Теперь он работает. На самом деле первый код работал, когда я удалил driver.maximize_window(). Кажется, это вызывает эти хитроумные ошибки. Это потому, что он не работает с firefox очень хорошо? – BruceyBandit

Смежные вопросы