首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
聊聊Web自动化测试:黑盒、白盒、α测试、β测试、冒烟测试、回归测试
Selenium三剑客:WebDriver、IDE、Grid一网打尽
Selenium开发环境搭建
下载安装浏览器驱动:教你解决最麻烦的版本匹配问题
第一个Selenium测试:Selenium测试流程、源码分析
实现元素定位:掌握Selenium八大定位方法
通过打车生活案例,深入剖析WebDriver运行原理
掌握WebDriver核心方法和属性的使用
掌握WebElement核心方法和属性的使用
form表单:熟练掌握form表单操作步骤
掌握checkbox和radiobutton的定位技巧
下拉列表:熟练使用Select类,来实现下拉列表定位
弹框处理:掌握alert、confirm、prompt三种弹出的用法
Selenium三种等待方式:剖析原理、用法和应用场景
Selenium等待条件:掌握17种元素等待条件
掌握鼠标单击、双击、右击,键盘输入、键盘组合键的应用
熟练执行JavaScript的方法和技巧,掌握JavaScript操作滚动条
Selenium屏幕截图:实现屏幕截屏、按照日期时间格式保存图片
掌握frame、iframe定位,熟练frame的切入和切出
下载安装Selenium IDE:下载安装Chrome、Firefox插件IDE
熟练Selenium IDE菜单栏、工具类、命令窗口的使用
Selenium IDE实现录制和回放及脚本导出
项目环境搭建:安装JDK、MySQL、Tomcat和测试系统
需求分析和用例设计:深度挖掘需求,掌握测试用例设计范式
项目架构设计:掌握分层设计思想,合理设计目录和包结构
解决验证码问题-方案一:使用pytesseract和Pillow实现验证码识别
解决验证码问题-方案二:通过第三方AI库识别验证码
实现工具类:设计获得验证码、随机字符串生成、cookie操作工具类
完成用户注册测试用例:解决验证码、等待弹框等复杂内容
完成用户登录测试用例:实现登录成功和失败测试
完成管理员登录测试用例:完成验证码正确和错误测试用例
完成文章分类测试用例:解决测试用例依赖问题
完成添加、删除文章测试用例
unittest简介:测试用例、测试套件、测试运行器、测试加载器
unittest中的方法:掌握各种setup、teardown和断言方法
测试用例、测试套件和测试加载器:掌握加载测试用例的四种方法
使用unittest重构测试用例:掌握使用unittest模块的方法和技巧
为项目添加测试报告:使用第三方模块实现测试报告
pytest框架简介:pytest安装、用例编写规则、执行用例
pytest标记:查找测试策略、标记测试函数
pytest参数化处理:使用参数化装饰器、解析列表、元组、字典等数据
pytest Fixture:使用fixture实现用例之间的调用
pytest setup 和 teardown
pytest allure生成测试报告
使用pytest重构项目:实现用例依赖、测试报告、数据参数化
logging模块简介:日志的作用、等级和常用函数
logging日志格式输出:日志发生的时间、文件、模块、行号等信息格式输出
logging模块四大组件:Logger、Handler、Formatter、Filter的用法
为项目添加日志:将日志应用到项目
使用csv模块读取CSV文件,使用pytest参数化实现DDT
使用json模块读取json文件,使用pytest参数化实现DDT
使用xlrd模块读取excel文件,使用pytest参数化实现DDT
Selenium读取数据库数据:将数据保存到数据库,实现数据驱动的测试
Selenium DDT:使用DDT模块实现数据驱动的测试
使用DDT思想重构项目:使用数据库保存数据,将数据驱动思想应用到项目
POM设计模式简介:理解页面-对象-模型设计模式,实现代码的松耦合
设计BasePage类:设计基类,提高项目的代码重用性
设计项目页面对应的PO类:使用POM设计模式设计PO类
设计项目测试用例:将POM设计模式应用到项目
Selenium Grid下载安装:配置Java运行环境,下载安装Selenium Grid
Selenium注册node节点
使用Selenium执行远程测试
Jenkins环境搭建:下载安装Jenkins
在Jenkins中运行项目
邮件通知:实现邮件通知功能
定时运行项目,实现真正的自动化测试
当前位置:
首页>>
技术小册>>
Selenium自动化测试实战
小册名称:Selenium自动化测试实战
### 章节:下拉列表:熟练使用Select类,来实现下拉列表定位 在Web自动化测试中,下拉列表(Dropdown Lists)是一种常见的UI元素,用于提供用户从预定义选项中选择一项的功能。Selenium WebDriver提供了`Select`类,专门用于处理HTML中的`<select>`元素及其子元素`<option>`和`<optgroup>`,极大地简化了对下拉列表的操作。本章节将深入探讨如何使用Selenium的`Select`类来定位、选择和验证下拉列表中的选项,确保你在自动化测试过程中能够熟练应对各种下拉列表场景。 #### 一、认识`<select>`元素 在HTML中,`<select>`元素用于创建下拉列表。它通常包含多个`<option>`子元素,每个`<option>`代表一个可选项。此外,`<select>`元素还可以包含`<optgroup>`元素,用于将选项分组。`<select>`元素支持多个属性,如`multiple`(允许多选)、`disabled`(禁用)等,这些属性会影响元素的交互行为。 #### 二、Selenium `Select`类的引入与使用 Selenium WebDriver通过`Select`类提供了一套丰富的API来操作`<select>`元素。首先,你需要从`selenium.webdriver.support.ui`模块中导入`Select`类。 ```python from selenium.webdriver.support.ui import Select ``` 接下来,你可以通过Selenium的`find_element`方法定位到`<select>`元素,并创建一个`Select`实例来操作它。 ```python # 假设driver是已经初始化好的WebDriver实例 select_element = driver.find_element(By.ID, "mySelect") select = Select(select_element) ``` #### 三、`Select`类的主要方法 `Select`类提供了几个关键的方法来处理下拉列表的选项,包括选择、取消选择和获取选项信息。 1. **选择选项** - `select_by_value(value)`: 通过选项的`value`属性值来选择。 - `select_by_index(index)`: 通过选项的索引位置来选择(索引从0开始)。 - `select_by_visible_text(text)`: 通过选项的可见文本(即用户看到的文本)来选择。 示例代码: ```python # 通过value选择 select.select_by_value("2") # 通过索引选择 select.select_by_index(1) # 通过可见文本选择 select.select_by_visible_text("选项三") ``` 2. **取消选择(仅适用于多选下拉列表)** - `deselect_by_value(value)`: 通过选项的`value`属性值来取消选择。 - `deselect_by_index(index)`: 通过选项的索引位置来取消选择。 - `deselect_by_visible_text(text)`: 通过选项的可见文本来取消选择。 注意:这些方法仅在`<select>`元素具有`multiple`属性时有效。 3. **获取所有选项** - `all_selected_options`: 获取所有被选中的`<option>`元素。 - `options`: 获取所有`<option>`元素,无论是否被选中。 示例代码: ```python # 获取所有选中的选项 all_selected = select.all_selected_options # 获取所有选项 all_options = select.options ``` 4. **清空选择(仅适用于多选下拉列表)** - `deselect_all()`: 取消选择所有选项。 示例代码: ```python # 取消选择所有选项 select.deselect_all() ``` #### 四、实战应用 接下来,我们通过几个实际场景来演示`Select`类的使用。 ##### 场景一:选择单个选项 假设你正在测试一个用户注册页面,需要选择一个国家。 ```python # 定位到国家下拉列表 country_select = Select(driver.find_element(By.ID, "countrySelect")) # 通过可见文本选择国家 country_select.select_by_visible_text("中国") ``` ##### 场景二:处理多选下拉列表 在某些应用中,用户可能需要从多个选项中选择多个项,如兴趣爱好的选择。 ```python # 定位到兴趣爱好下拉列表 hobbies_select = Select(driver.find_element(By.ID, "hobbiesSelect")) # 选择多个兴趣爱好 hobbies_select.select_by_visible_text("阅读") hobbies_select.select_by_visible_text("游泳") # 验证是否都选中了 assert len(hobbies_select.all_selected_options) == 2 ``` ##### 场景三:处理动态加载的下拉列表 有时,下拉列表的选项是动态加载的,即在用户进行某些操作(如输入搜索词)后才会显示。这时,你需要确保下拉列表已完全加载后再进行操作。 ```python # 假设某个操作后,城市下拉列表被更新 # 等待条件,确保下拉列表已加载完成(这里使用显式等待) from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.ID, "citySelect"))) # 定位并操作下拉列表 city_select = Select(driver.find_element(By.ID, "citySelect")) city_select.select_by_visible_text("北京") ``` #### 五、注意事项 1. **确保元素可见**:在尝试操作下拉列表之前,确保它是可见的。如果元素被遮挡或未滚动到视图中,可能需要额外的步骤来使其可见。 2. **处理JavaScript渲染的下拉列表**:某些网站使用JavaScript动态生成下拉列表。在这种情况下,`Select`类可能不适用,你需要使用JavaScriptExecutor来模拟用户操作。 3. **异常处理**:在操作下拉列表时,可能会遇到各种异常(如`NoSuchElementException`、`StaleElementReferenceException`等),因此,合理的异常处理机制是必不可少的。 #### 六、总结 通过本章节的学习,你应该已经掌握了Selenium `Select`类的使用方法,能够熟练地对Web页面中的下拉列表进行定位、选择和验证。在自动化测试实践中,合理利用`Select`类可以显著提高测试脚本的编写效率和测试结果的准确性。同时,也要注意处理动态加载和JavaScript渲染的特殊情况,确保测试的全面性和稳定性。
上一篇:
掌握checkbox和radiobutton的定位技巧
下一篇:
弹框处理:掌握alert、confirm、prompt三种弹出的用法
该分类下的相关小册推荐:
Python合辑4-130个字符串操作示例
Python3网络爬虫开发实战(上)
Python合辑9-判断和循环
Python爬虫入门与实战开发(上)
Python合辑11-闭包函数
剑指Python(万变不离其宗)
Python甚础Django与爬虫
Python合辑2-字符串常用方法
Python高并发编程与实战
Python编程轻松进阶(五)
Python编程轻松进阶(四)
Python数据分析与挖掘实战(上)