Как выборочно перебирать выпадающее меню с помощью селена

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

Я только сталкивался с предыдущими вопросами, где требуется либо один выбор, либо каждый выбор в раскрывающемся списке.

Chrome_Path = r"C:\Users\George\Desktop\chromedriver.exe"

driver.get("http://www.snookerdatabase.co.uk")

driver.find_element_by_xpath("""//*[@id="Table1"]/tbody/tr[3]/td[1]/b/a[2]""").click()

driver.find_element_by_name("year").click()

person Snoopy94    schedule 28.03.2019    source источник
comment
Возможный дубликат Selenium (Python) — SELECT   -  person JeffC    schedule 28.03.2019
comment
Выбранный ответ ответит на ваш вопрос, просто удалите лишнюю строку select = ..., если ваш SELECT не обновляет страницу при выборе варианта.   -  person JeffC    schedule 28.03.2019


Ответы (2)


Используйте Select, чтобы выбрать значение из раскрывающегося списка.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.select import Select

driver = webdriver.Chrome()


driver.get("http://www.snookerdatabase.co.uk")

wait=WebDriverWait(driver,5)
wait.until(expected_conditions.element_to_be_clickable((By.XPATH,'//*[@id="Table1"]/tbody/tr[3]/td[1]/b/a[2]'))).click()

i=2010
while i<2020:
 select = Select(driver.find_element_by_name("year"))
 select.select_by_value(str(i))
 i=i+1
person KunduK    schedule 28.03.2019
comment
Почему driver.get("https://www.youtube.com/watch?v=l5LfjYmNEJs&t=160s") между ними :) - person DebanjanB; 28.03.2019
comment
Спасибо за ответ, как бы вы собирали материалы по мере их повторения каждый год? Я хочу ввести конкретные ссылки для каждого года и извлечь данные из ссылок. - person Snoopy94; 28.03.2019
comment
@DebanjanB: Спасибо, я удалил это :) - person KunduK; 28.03.2019
comment
@ Snoopy94: возьмите driver.page_source и используйте красивый суп, чтобы удалить его. - person KunduK; 28.03.2019
comment
Я пробовал это, но я думаю, что проблема в том, что изменение выбора в раскрывающемся списке не меняет page_source (URL не изменился), и поэтому красивый суп просто очищает ссылки 2019 года снова и снова. - person Snoopy94; 28.03.2019
comment
Можете ли вы опубликовать отдельный вопрос и указать, каков ваш ожидаемый результат? - person KunduK; 28.03.2019

Это должно помочь вам:

from selenium.webdriver.support.ui import Select
select = Select(driver.find_element_by_name('name'))
select.select_by_index(index)
select.select_by_visible_text("text")
select.select_by_value(value)
person irezwi    schedule 28.03.2019