Вы можете использовать селен Select () класс для выбора элемента из раскрывающегося списка.
Для обработки динамики c element вызвать WebDriverWait
() и ждать element_to_be_clickable
( )
Код:
driver.get("http://www.ogimet.com/")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Sondeos por territorios"))).click()
select=Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "select[name='estado']"))))
select.select_by_value('Peru')
selectyear=Select(WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@name='ano']"))))
selectyear.select_by_visible_text('2004')
Однако, если вы все еще хотите использовать опцию , чтобы щелкнуть элемент, используйте этот код.
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@name='ano']/option[text()='2004']"))).click()
Если вы хотите параметризовать этот код, попробуйте следующий код.
year='2004'
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//select[@name='ano']/option[text()='{}']".format(year)))).click()
Вам необходимо импортировать следующие библиотеки.
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.select import Select