python - 如何使用 Selenium 和 Python 选择下拉菜单项(值或文本)?

标签 python select selenium drop-down-menu

第一次发帖!

我对 Python 和 Selenium 是全新的,但我正在尝试自动化基本测试,但找不到这个问题的答案。

在 ebay.com 主页上,我尝试选择“所有类别”下拉菜单,然后选择“Dolls & Bears”选项(选项值 =“237”)。当我执行脚本时,会访问菜单,但不会选择“Dolls & Bears”选项。测试不会返回任何错误。我还尝试过使用 select_by_visible_text。

这是我的代码。我感谢任何帮助!

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Firefox()
driver.get("http://www.ebay.com")
assert "Electronics" in driver.title
elem = driver.find_element_by_id("gh-ac")
elem.send_keys("funny bear")
driver.find_element_by_id("gh-cat").click()

def select_a_value(选择):

Select.select_by_value("237").click()

最佳答案

欢迎来到堆栈溢出!

您非常接近这段代码。 “Select”是一个可以实例化的类,而不仅仅是一个函数库。这是脚本的工作版本:

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time

driver = webdriver.Firefox()
driver.get("http://www.ebay.com")
assert "Electronics" in driver.title
elem = driver.find_element_by_id("gh-ac")
elem.send_keys("funny bear")
dropdown_web_element = driver.find_element_by_id("gh-cat")
select_box = Select(dropdown_web_element)
time.sleep(1)
select_box.select_by_value("237")

请注意,对 Select 的调用会传入一个值(在本例中为 WebElement)来实例化该对象。您可以查看 selenium 源代码以了解其调用方式(Windows 上为 Python27/Lib/site-packages/selenium/webdriver/support/select.py)。

另外,我在其中添加了 time.sleep(1) 。您偶然发现了有关 Selenium 的一件令人沮丧的事情。在网站上异步加载数据可能会导致测试失败,因为它们的运行速度比人类通常单击按钮的速度快。当您到达脚本中的该点时,数据可能不存在!处理此问题的正确方法是动态等待合理的时间,直到您要查找的元素出现为止。有点超出了您所要求的范围,但我确信您很快就会处理这个问题。

祝你好运!

关于python - 如何使用 Selenium 和 Python 选择下拉菜单项(值或文本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377714/

相关文章:

python - 使用连接表进行过滤

php - Mysql select into PHP associative array 不工作

当 field=0 时,mySQL 返回所有行

java - cucumber 选项(命令行)不再适用于较新版本的 cucumber (io.cucumber)?

python - Selenium Python ElementNotVisibleException

python - 使用 NCO 扩展 netCDF 文件的尺寸

python - SQLite3 整数和 CURRENT_TIMESTAMP

python - 如何合并100张图像以获得大图像?

sql - 计算一行中的 NULL 数

java - Selenium 无法定位 iframe 元素