
web自动化测试下拉选择框Select
获取选项列表:
发布日期:2021-05-13 21:48:50
浏览次数:12
分类:精选文章
本文共 1805 字,大约阅读时间需要 6 分钟。
Selenium 提供了丰富的API来操作下拉框,即Select类。了解和掌握这些API能帮助开发者高效地处理表单选择操作。
引入Select类
首先,需要在代码里引入Select类,可以从selenium.webdriver.support.select模块导入。这样才能操作下拉框元素:
from selenium.webdriver.support.select import Select
同时,通常情况下需要先从selenium.webdriver.common.by模块导入By:
from selenium.webdriver.common.by import By
这样,可以使用CSS或其他定位方式找到下拉框。
定位下拉框
在网页中,下拉框通常使用<select>
标签包裹<option>
选项。使用WebDriver找到下拉框可以通过CSS选择者。例如:
select_element = driver.find_element(By.CSS_SELECTOR, "body > select")select_obj = Select(select_element)
需要注意定位是否唯一,确保只找到目标下拉框。
获取和处理下拉选项
获取所有选项,可以使用options
属性:
options_list = select_obj.optionsfor option in options_list: print(option.text)
- 获取当前选中的选项:
- 通过索引选择:
- 通过值选择:
- 通过可见文本选择:
- 选择索引:
- 选择值:
- 选择可见文本:
- 确保定位方式准确,避免
Not Found
错误。 - 不同网页下拉框结构可能不同,需要根据实际情况调整定位。
- 测试时,注意下拉框中是否有多选结构,对Select类的支持有影响。
- 使用
select_by_*
方法时,要确保有选项匹配,否则可能抛出异常。 - 有时Need to use WebDriverWait来等待元素加载完毕,防止错过动态加载的内容。
使用first_selected_option
方法,即可获取选中的选项:
selected_option = select_obj.first_selected_optionprint(selected_option.text)
下拉框的操作方法
除了获取之外,还可以使用Select类的方法直接操作下拉框:
select_obj.select_by_index(1)
select_obj.select_by_value("volvo")
select_obj.select_by_visible_text("Audi")
取消选择
如果需要取消选择,可以使用类似的方法:
select_obj.deselect_by_index(1)
select_obj.deselect_by_value("opel")
select_obj.deselect_by_visible_text("Audi")
还有deselect_all
方法来取消所有选项选择。
示例代码
from selenium.webdriver import webdriverfrom selenium.webdriver.support.select import Selectfrom selenium.webdriver.common.by import Bydriver = webdriver.Chrome()driver.get('https://www.w3school.com.cn/tiy/t.asp?f=html_select')# 进入下拉框对应的 iframe 内容iframe = driver.find_element_by_xpath("//a[contains(text,'运行代码')] momselect")result = Select(driver.find_element(By.CSS_SELECTOR, "body:nth-child(2) select:nth-child(1)")).options
注意事项
通过掌握这些方法,可以有效地对下拉框进行操作,提升自动化测试效率。遇到问题再仔细核查定位方式和网页结构,持续练习即可熟练掌握。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月18日 06时39分54秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Flink】Flink 底层RPC框架分析
2019-03-06
MySQL错误日志(Error Log)
2019-03-06
C++高精度模板
2019-03-06
解决:angularjs radio默认选中失效问题
2019-03-06
windows环境下安装zookeeper(仅本地使用)
2019-03-06
缓冲区溢出实例(一)--Windows
2019-03-06
PHP一句话木马小总结与SQL语句写一句话木马
2019-03-06
Python中字符串前添加r ,b, u, f前缀的含义
2019-03-06
Hadoop学习笔记—Yarn
2019-03-06
JSONPath小试牛刀之Snack3
2019-03-06
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2019-03-06
wxWidgets源码分析(3) - 消息映射表
2019-03-06
wxWidgets源码分析(5) - 窗口管理
2019-03-06
wxWidgets源码分析(7) - 窗口尺寸
2019-03-06
wxWidgets源码分析(8) - MVC架构
2019-03-06
wxWidgets源码分析(9) - wxString
2019-03-06
Mybatis Generator最完整配置详解
2019-03-06
[白话解析] 深入浅出熵的概念 & 决策树之ID3算法
2019-03-06
[梁山好汉说IT] 梁山好汉和抢劫银行
2019-03-06