当前位置: 首页 > 知识库问答 >
问题:

如何选择一个值从下拉菜单在python硒

齐成双
2023-03-14

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

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

下面是我使用的代码:

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()

从上面的代码中,您可以看到我正在使用xpath选择下拉列表grbf=driver。通过xpath(//select[@id='rain'])查找元素,然后将键作为2019发送,即grbf。发送密钥('2019'),然后我调用下载按钮下载。但出于某种原因,它总是从下拉列表中选择1999年。我不明白这是怎么回事。这是解决这个问题的正确方法。请帮忙。谢谢

共有3个答案

韦高阳
2023-03-14

在我看来,我认为这不是正确的方法。您尝试选择下拉选项(而不是类似文本框的选项),因此“发送关键点”命令不起作用。

您需要做的是,在单击下拉列表时尝试检查HTML的更改,并尝试使用XPath查找要选择的选项。

如果您仍然无法解决这个问题,我建议您使用katalon recorder,它是一个chrome扩展,允许您录制和执行UI测试

郭子航
2023-03-14

请尝试以下代码:

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

另一个处理下拉的方法:

使用下拉列表索引:

select.select_by_index(Paass index)

Dropdown的使用价值:

select.select_by_value('value of element')

使用下拉列表的可见文本:

select.select_by_visible_text('element_text')
益源
2023-03-14

不久前我也有同样的问题。试试这个:

from selenium.webdriver.support.ui import Select

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

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

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

grbf = Select(driver.find_element_by_id('rain'))
 类似资料:
  • 问题内容: 我需要从下拉菜单中选择一个元素。 例如: 1)首先,我必须单击它。我这样做: 2)之后,我必须选择一个好的元素,让我们说Mango。 我试图这样做,但是没有用。 问题答案: 除非你的点击触发了某种Ajax调用来填充列表,否则你实际上不需要执行该点击。 只需找到元素,然后枚举选项,然后选择所需的选项即可。 这是一个例子:

  • 我想从下面的列表中选择一个使用selenium的选项: 这里 但问题是没有列表可供选择。 在此输入图像说明 我到目前为止的代码: 需要帮助!!

  • 问题内容: 我正在建立一个网站来学习编码,并且正在尝试建立一个工具,用户单击一个选择/下拉列表,其中包含从数据库 cat 提取的某些类别名称,然后另一个选择与从数据库 subcat 提取的子类别名称一起出现。这几乎与Yelp的(向下分类)完全一样,就像Yelp的(向下分类)一样。 我还做了一个图: 我已经有一个从 cat 数据库中提取的类别下拉列表: 我有一个从subcat数据库中提取的subca

  • 问题内容: [Selenium和HTML上的新功能] 我想从网站上选择一个下拉菜单。该隐藏。我只是想通过或选择或从下拉或将其传递到变量,我会怎么做呢? 我使用了chrome中的inspect元素来确定以下两行是选择值所需的行。 我从chrome获取了xpath并尝试传递一个值,但没有成功: 上述元素的整个HTML 为: 先感谢您。 编辑: 我从下拉列表中单击的HTML,但未选择任何值: 编辑2:

  • 我正在尝试通过selenium驱动程序和Python来玩autologin测试。我正在使用这个站点https://invoiceaccess.pgiconnect.com/我做了什么: 例如,我需要选择,但它选择了。在我犯错的地方,谁能帮帮我?

  • 问题内容: 我试图使用AngularJS创建一个链接/级联的下拉列表(选择元素),但是我很难用我的对象属性过滤和更新“ selected”属性。 首次加载页面时,所选项目将被过滤并正确显示在下拉菜单中。更改父级下拉菜单后,子级选择项不会抓住已过滤列表中的第一个项,导致子级下拉项不会更新。 任何见解将不胜感激,请注意,我将父/子/孙子数组分开(而不是在子数组中),因为最终我将从SQL中的单独spoc