自动化测试定位策略
同学们大家好,今天这个章节我们来学习自动化测试定位策略。
简介
Web 自动化测试定位策略是指在自动化测试脚本中用于准确定位和操作 Web 页面元素的方法和规则。
选择正确的定位策略对于成功执行自动化测试非常重要,因为它直接影响到测试脚本的稳定性和可维护性。
首先我们先来了解一下什么叫做自动化测试定位策略,在Web 自动化测试中的定位策略其实就是是指在测试脚本中用于准确找到并操作页面元素的一套方法和规则。这些策略的作用是帮助测试工具快速定位目标元素,从而模拟用户的行为,例如点击、输入文本或验证页面状态等。那么选择合适的定位策略,就显得至关重要了,因为它能够直接影响测试脚本的稳定性和可维护性。一个良好的定位策略可以使脚本更加灵活,更好地适应页面结构的变化,并且可以在长时间的测试维护过程中减少因定位失败引发的问题,从而提升测试效率和准确性。那么接下来,我们就将深入探讨如何选择和使用不同的定位策略。
定位方式
我们先来看定位方式,在自动化测试中,定位方式可以根据具体场景分为通用场景和特殊场景,每种场景都有适配的策略和技巧。通用场景主要包括的就是使用 Web 常见的定位方式,比如我们经常会用到的,通过 ID、Class Name、CSS 选择器、XPath 等方式直接定位页面元素,以及通过 JavaScript 操作 DOM 元素的 CSS 定位方法。那么什么是特殊场景呢,特殊场景则指的是需要针对具体情况采用定制化的定位策略,比如处理弹框(alert),可以使用 WebDriver 提供的 switchTo() 点 alert() 方法;还有日期控件,可能需要动态选择日期或处理非标准输入框;还有文件上传,常常需要绕过系统窗口直接操作 HTML 输入标签;除此之外,还有很多其他复杂的页面场景,比如说嵌套框架、动态加载元素等,都需要灵活运用定位技巧。那么对于我们来说,通过结构化思维来规划这些定位方式,就不仅能够帮助我们快速应对各种场景,还能提升脚本的稳定性和可维护性。
通用 Web 定位方式
通过八大定位方式进行定位:
定位策略 | 描述 |
---|---|
class name | 通过 class 属性定位元素 |
css selector | 通过匹配 css selector 定位元素 |
id | 通过 id 属性匹配元素 |
name | 通过 name 属性定位元素 |
link text | 通过 <a>text</a> 标签中间的 text 文本定位元素 |
partial link text | 通过 <a>text</a> 标签中间的 text 文本的部分内容定位元素 |
tag name | 通过 tag 名称定位元素 |
xpath | 通过 xpath 表达式匹配元素 |
Web 自动化测试中常用的定位方式有八种,每种方式适用于不同的场景,选择合适的定位策略可以提高测试脚本的稳定性和效率。class name 通过元素的 class 属性来定位,适用于元素具有唯一的 class 名称的情况,简单且快速,但如果 class 属性不唯一,可能导致定位失败;css selector 通过匹配 CSS 选择器定位元素,能够根据 id、class、标签类型、属性等进行定位,灵活且强大,适用于复杂页面结构;id 通过元素的 id 属性来定位,通常 id 是唯一的,因此它是最稳定和高效的定位方式之一;name 通过元素的 name 属性来定位,适用于表单元素,如果 name 是唯一的,也是一个可靠的方式;link text 通过 标签中的文本来定位链接,适用于静态文本链接;partial link text 通过 标签中部分文本来定位,适合无法完全匹配的长文本链接;tag name 通过标签名称定位元素,适用于页面中多个同类型元素的定位,如所有按钮或链接;xpath 通过 XPath 表达式精确定位元素,适用于复杂或动态页面,能够通过多种条件进行筛选,灵活性高,但可能影响性能。
选择定位器通用原则
- 与研发约定的属性优先(class 属性:
[name='locate']
)- 在与开发团队约定的属性上进行定位,以确保一致性和可维护性。
-
身份属性 id,name(web 定位)
- 使用
id
和name
属性进行定位,这些属性通常是唯一的,是首选的定位方法。
- 使用
-
复杂场景使用组合定位:
- 使用
xpath
和css
选择器来处理复杂的定位需求。 - 处理属性动态变化:通过 xpath
- 重复元素属性(id,text,class)
- 父子定位:通过定位父元素,然后在其内部查找子元素。
- 使用
- js 定位
- 使用 js 注入来定位元素,特别适用于处理动态或特殊交互的元素。
{.hidden .audio .subtitle}
特殊定位场景
{.hidden .audio .subtitle}
弹框-alert()
- 场景
- web 页面 alert 弹框
- 解决:
- web 需要使用
driver.switchTo().alert()
处理
- web 需要使用
{.hidden .audio .subtitle}
日期控件
-
场景:
<input>
标签组合的下拉框无法定位<input>
标签组合的日期控件无法定位
- 解决:
- 面对这些元素,我们可以引入 JS 注入技术来解决问题。
{.hidden .audio .subtitle}
文件上传
- 场景:
- input 标签文件上传
- 解决:
- input 标签直接使用 send_keys()方法
{.hidden .audio .subtitle}
总结
- 定位方式
- 选择定位器通用原则
- 特殊定位场景
选择合适的定位策略取决于页面结构、元素特性和项目约定。在 Web 自动化测试中,综合运用这些策略可以确保测试脚本的稳定性和可维护性,从而提高自动化测试的效率和可靠性。熟练掌握不同的定位方法,并根据实际情况灵活应用,是自动化测试工程师的重要技能之一。