首页
技术小册
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自动化测试实战
### 实现元素定位:掌握Selenium八大定位方法 在Selenium自动化测试中,元素定位是执行任何自动化脚本的基础。Selenium提供了多种灵活且强大的元素定位策略,使得开发者可以根据页面元素的特性,选择最合适的定位方法来定位元素,从而执行点击、输入、验证等操作。本章将深入解析Selenium中的八大元素定位方法,帮助读者掌握这些关键技能,以便在自动化测试实践中游刃有余。 #### 1. ID定位 **基本原理**:ID定位是最直接、最快速的定位方式之一,它通过HTML元素的`id`属性来定位元素。在HTML文档中,每个元素的`id`属性应该是唯一的,因此ID定位具有很高的准确性和效率。 **使用方法**: ```python element = driver.find_element_by_id("elementId") # 或者在Selenium 4.x中,推荐使用新的方法(旧方法已标记为弃用) element = driver.find_element(By.ID, "elementId") ``` **注意事项**: - 确保元素的`id`属性是唯一的。 - 如果页面动态加载或元素ID发生变化,需要及时更新脚本。 #### 2. Name定位 **基本原理**:Name定位通过HTML元素的`name`属性来定位元素。虽然`name`属性的唯一性不如`id`,但在某些表单元素(如输入框、单选按钮等)中,`name`属性常被用作标识。 **使用方法**: ```python element = driver.find_element_by_name("elementName") # Selenium 4.x新方法 element = driver.find_element(By.NAME, "elementName") ``` **注意事项**: - 当页面上存在多个相同`name`属性的元素时,这种定位方式可能返回第一个匹配的元素,需要谨慎使用。 #### 3. Class Name定位 **基本原理**:Class Name定位通过元素的`class`属性来定位元素。由于一个元素可以有多个类名,且类名可以在多个元素间共享,因此这种定位方式可能不够精确,但非常灵活。 **使用方法**: ```python element = driver.find_element_by_class_name("className") # Selenium 4.x新方法 element = driver.find_element(By.CLASS_NAME, "className") ``` **注意事项**: - 当使用多个类名时,只能指定一个类名进行定位。 - 类名对大小写敏感,需要确保完全一致。 #### 4. Tag Name定位 **基本原理**:Tag Name定位通过HTML标签的名称来定位元素。这种方法通常用于定位具有特定标签名的元素,如`<div>`、`<input>`等,但由于HTML中相同标签的元素可能很多,因此定位结果可能不够精确。 **使用方法**: ```python element = driver.find_element_by_tag_name("tagName") # Selenium 4.x新方法 element = driver.find_element(By.TAG_NAME, "tagName") ``` **注意事项**: - 由于标签名的普遍性,这种定位方式通常用于辅助定位或特定场景下的快速定位。 #### 5. Link Text定位 **基本原理**:Link Text定位专用于定位`<a>`标签内的文本,即超链接文本。通过完整匹配链接文本内容来定位元素。 **使用方法**: ```python element = driver.find_element_by_link_text("完整链接文本") # Selenium 4.x新方法 element = driver.find_element(By.LINK_TEXT, "完整链接文本") ``` **注意事项**: - 必须完整匹配链接文本,包括空格和特殊字符。 #### 6. Partial Link Text定位 **基本原理**:Partial Link Text定位是Link Text定位的扩展,它允许通过链接文本的一部分来定位元素。这在链接文本较长或包含动态内容时特别有用。 **使用方法**: ```python element = driver.find_element_by_partial_link_text("部分链接文本") # Selenium 4.x新方法 element = driver.find_element(By.PARTIAL_LINK_TEXT, "部分链接文本") ``` **注意事项**: - 只需匹配链接文本的一部分即可,但应确保这部分文本在页面中具有足够的唯一性。 #### 7. XPath定位 **基本原理**:XPath是一种在XML和HTML文档中查找信息的语言。XPath定位通过XML路径表达式来定位页面元素,提供了极高的灵活性和强大的定位能力。 **使用方法**: ```python element = driver.find_element_by_xpath("//tagName[@attribute='value']") # Selenium 4.x新方法 element = driver.find_element(By.XPATH, "//tagName[@attribute='value']") ``` **注意事项**: - XPath表达式可以非常复杂,但应尽量避免使用过于复杂的表达式,以提高脚本的可读性和维护性。 - XPath对大小写敏感,特别是元素名和属性名。 #### 8. CSS Selector定位 **基本原理**:CSS Selector定位通过CSS选择器来定位元素。CSS选择器是CSS(层叠样式表)中用于选择元素并应用样式的模式。在Selenium中,CSS Selector定位提供了另一种灵活且强大的元素定位方式。 **使用方法**: ```python element = driver.find_element_by_css_selector("cssSelector") # Selenium 4.x新方法 element = driver.find_element(By.CSS_SELECTOR, "cssSelector") ``` **CSS Selector示例**: - 通过类名定位:`.className` - 通过ID定位:`#elementId` - 通过属性定位:`[attribute='value']` - 组合选择器:`tagName.className#elementId[attribute='value']` **注意事项**: - CSS Selector定位提供了丰富的选择器类型,如类型选择器、类选择器、ID选择器、属性选择器等,可以组合使用以满足复杂的定位需求。 - 与XPath相比,CSS Selector通常更简洁、性能更好,是推荐使用的定位方式之一。 ### 总结 掌握Selenium的八大定位方法是进行自动化测试的基础。每种定位方法都有其适用场景和优缺点,在实际测试中应根据页面元素的特点和测试需求灵活选择。同时,随着页面结构和内容的动态变化,可能需要结合使用多种定位方法,甚至编写更复杂的定位逻辑来确保元素能够被准确、稳定地定位。通过不断实践和积累,你将能够更加熟练地运用这些定位方法,提高自动化测试的效率和可靠性。
上一篇:
第一个Selenium测试:Selenium测试流程、源码分析
下一篇:
通过打车生活案例,深入剖析WebDriver运行原理
该分类下的相关小册推荐:
Python合辑14-面向对象编程案例(下)
Python数据分析与挖掘实战(上)
Python甚础Django与爬虫
Python编程轻松进阶(一)
剑指Python(磨刀不误砍柴工)
Python面试指南
Python爬虫入门与实战开发(上)
Python合辑8-变量和运算符
Python机器学习实战
Python合辑4-130个字符串操作示例
Python3网络爬虫开发实战(上)
Python合辑10-函数