如何从 python selenium 的下拉菜单中选择一个值

S A*_*rew 0 python selenium drop-down-menu

我正在编写一个 python 脚本,它将调用一个网页,并从下拉列表中选择一个选项来下载该文件。为了完成此任务,我使用chropath。它是一个浏览器扩展,可以为您提供网页上任何按钮或字段的相对 xpath 或 id,并使用它我们可以从 python selenium 脚本调用它。

在此输入图像描述

上图显示了下拉菜单,我必须在其中选择2019年份并下载文件。在图像的下半部分,你可以看到我用来chropath获取下拉菜单的相对xpath,即//select[@id='rain']

下面是我正在使用的代码:

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

driver = webdriver.Firefox()
driver.get("<URL>")

driver.maximize_window()

grbf = driver.find_element_by_xpath("//select[@id='rain']") 
grbf.send_keys('2019')

grbf_btn = (By.XPATH, "//form[1]//input[1]")
WebDriverWait(driver, 20).until(EC.element_to_be_clickable(grbf_btn)).click()
Run Code Online (Sandbox Code Playgroud)

从上面的代码中,您可以看到我使用 xpath 选择下拉菜单grbf = driver.find_element_by_xpath("//select[@id='rain']") ,然后以2019ie形式发送密钥grbf.send_keys('2019'),之后我调用下载按钮来下载它。但由于某种原因,它总是1999从下拉菜单中选择年份。我无法理解这有什么问题。这是解决这个问题的正确方法吗?请帮忙。谢谢

小智 5

我不久前也遇到过同样的问题。尝试这个:

from selenium.webdriver.support.ui import Select

grbf = Select(driver.find_element_by_xpath("//select[@id='rain']"))
grbf.select_by_value('2019')
Run Code Online (Sandbox Code Playgroud)

在 select_by_value() 中,您必须使用下拉列表中元素的值。

顺便说一下,如果一个元素有 id,就使用它。

grbf = Select(driver.find_element_by_id('rain'))
Run Code Online (Sandbox Code Playgroud)