自动化测试定位方式那么多,应该选哪个?

简介: 本文介绍了移动应用自动化测试中的定位策略,包括 ID、XPath、ClassName、AccessibilityID、Name、XPath 模糊定位、Android UI Automator、iOS Predicate 等。在Web测试中,使用class name、css selector、id等定位元素。选择定位器应遵循与研发约定、优先使用特定属性及组合定位的原则。当元素定位不到时,可能因定位信息错误、元素状态等问题,可通过调整策略、等待元素加载或使用JS操作解决。特殊控件如弹框、下拉框等,需采用特定方法如JS注入或send_keys()处理。

简介

定位策略是用于在自动化测试中定位移动应用界面元素的方法和策略。通过选择合适的定位策略,测试人员可以定位和操作应用程序的各种控件,如按钮、文本框、下拉列表等。常见的定位策略包括 ID 定位、XPath 定位、Class Name 定位、AccessibilityID 定位、Name 定位、XPath 模糊定位、Android UI Automator 定位以及 iOS Predicate 定位。通过灵活运用不同的定位策略,可以提高自动化测试的稳定性和可靠性。

App 定位方式

定位策略 描述
Accessibility ID 识别一个唯一的 UI 元素,对于 XCUITest 引擎,它对应的的属性名是 accessibility-id,对于 Android 系统的页面元素,对应的属性名是 content-desc
Class name 对于 iOS 系统,它的 class 属性对应的属性值会以XCUIElementType开头,对于 Android 系统,它对应的是 UIAutomator2 的 class 属性(e.g.: android.widget.TextView)
ID 原生元素的标识符,Android 系统对应的属性名为resource-id,iOS 为name
Name 元素的名称
XPath 使用 xpath 表达式查找页面所对应的 xml 的路径(不推荐,存在性能问题)
Image 通过匹配 base 64 编码的图像文件定位元素
Android UiAutomator (UiAutomator2 only) 使用 UI Automator 提供的 API, 尤其是 UiSelector 类来定位元素,在 Appium 中,会发送 Java 代码作为字符串发送到服务器,服务器在应用程序的环境中执行这段代码,并返回一个或多个元素
Android View Tag (Espresso only) 使用 view tag 定位元素
Android Data Matcher (Espresso only) 使用 Espresso 数据匹配器定位元素
IOS UIAutomation 在 iOS 应用程序自动化时,可以使用苹果的 instruments 框架查找元素

Web 定位方式

定位策略 描述
class name 通过 class 属性定位元素
css selector 通过匹配 css selector 定位元素
id 通过 id 属性匹配元素
name 通过 name 属性定位元素
link text 通过 text 标签中间的 text 文本定位元素
partial link text 通过 text 标签中间的 text 文本的部分内容定位元素
tag name 通过 tag 名称定位元素
xpath 通过 xpath 表达式匹配元素

选择定位器通用原则

  • 与研发约定的属性优先 。
    • web 推荐 class。
    • android 推荐 content-description。
    • ios 推荐 label。
  • 身份属性 id,name(web 定位)。
  • 组合定位 xpath,css。
  • 其它定位。

元素定位不到

导致 Appium 元素定位不到的原因可能包括定位信息错误、元素未加载完成、元素隐藏或不可见、元素定位策略不准确、Appium 和应用程序版本不兼容以及设备连接或设置问题。要解决这些问题,需要确保定位信息正确、等待元素加载完成、使元素可见、选择合适的定位策略、确保版本兼容性以及正确配置和设置设备。

原因 解决方案
定位不正确 在定位工具中先测试定位表达式是否正确
存在动态 ID 定位方式使用 css 或者 xpath 的相对定位
页面还没有加载完成 添加死等验证,使用显式等待或隐式等待进行优化
页面有 iframe 切换到 iframe 后定位
页面切换 window 切换到对应窗口后定位
要定位元素为隐藏元素 使用 js 操作该元素

混合定位的应用场景

  • 场景:
    • 属性动态变化(id,text)。
    • 重复元素属性(id,text,class)。
  • 解决:
    • 根据相对位置关系进行定位(css、xpath)(父级,子级,兄弟,索引)。
    • 使用 find_elements 遍历查找。
  • 参考高级定位技巧章节(xpath,css)。

使用等待机制的场景

  • 场景
    • 控件动态出现
    • 控件出现特定特征
  • 解决
    • 元素定位结合隐式等待与显式等待

特殊控件定位

Web 弹框定位

  • 场景
    • web 页面 alert 弹框
  • 解决:
    • web 需要使用 driver.switchTo().alert() 处理

App toast 提示框定位

  • 场景:
    • app Toast 提示框。
  • 解决:
    • 使用 driver.page_source 拿到页面布局结构文件,分析 Toast/弹框组件的标签内容。
    • 然后通过 id/text/class 等属性,使用 xpath 完成元素定位。
    • 结合隐式等待。

下拉框/日期控件定位

  • 场景:
    • 标签组合的下拉框无法定位。
    • 标签组合的日期控件无法定位。
  • 解决:
    • 面对这些元素,可以引入 JS 注入技术来解决问题。

文件上传定位

  • 场景:
    • input 标签文件上传。
  • 解决:
  • input 标签直接使用 send_keys() 方法。

总结

在选择定位策略时,需要考虑元素的属性、上下文以及应用的特定情况。有时候需要结合多个属性或使用相对定位,以确保定位的准确性和稳定性。此外,使用隐式等待或显式等待是确保元素加载完成的重要步骤,以避免定位超时的问题。

相关文章
|
5月前
|
编解码 Java 测试技术
『App自动化测试之Appium应用篇』| uiautomator + accessibility_id定位方法完全使用攻略
『App自动化测试之Appium应用篇』| uiautomator + accessibility_id定位方法完全使用攻略
131 0
|
3天前
|
XML 数据格式
Xpath高阶定位技巧,轻松玩转App测试元素定位!
XPath是一种用于XML文档中节点定位的语言,支持逻辑运算符(and、or、not)、轴定位、谓词和内置函数。
12 0
|
2月前
|
测试技术 Android开发 索引
XPath定位如何在App自动化测试中大显神威
本文介绍了如何在Appium中使用XPath进行自动化App测试。通过淘宝App实例,展示了XPath在定位元素上的应用,包括基础定位(如通过text、resource-id、class和content-desc属性),contains模糊定位,组合定位以及层级定位(如父、子、兄弟和祖元素定位)。XPath的灵活性和强大功能使得在Appium中高效地定位元素成为可能,从而提升移动应用的测试效率。
17 0
|
3月前
|
人工智能 前端开发 Java
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
软件测试/人工智能|熟练使用web控件定位技巧,提升测试工作效率!
199 1
|
5月前
|
SQL 前端开发 测试技术
软件测试/测试开发|如何定位bug,一篇文章告诉你
软件测试/测试开发|如何定位bug,一篇文章告诉你
50 0
|
5月前
|
前端开发 测试技术 Python
软件测试/测试开发|Python selenium CSS定位方法详解
软件测试/测试开发|Python selenium CSS定位方法详解
31 0
|
5月前
|
XML 人工智能 测试技术
软件测试/人工智能|详解selenium xpath定位
软件测试/人工智能|详解selenium xpath定位
54 2
|
8月前
测试定位打卡
测试定位打卡
40 0
|
10月前
|
移动开发 定位技术 API
百度地图开发:H5获取GPS-wg84经纬度与百度定位API的偏差测试
百度地图开发:H5获取GPS-wg84经纬度与百度定位API的偏差测试
144 0
|
12月前
|
测试技术
Sonic 开源移动端云真机测试平台 - 用例编写与回放流程实例演示,任务定时执行、图像相似度定位、公共步骤、公共参数、测试套件等(下)
Sonic 开源移动端云真机测试平台 - 用例编写与回放流程实例演示,任务定时执行、图像相似度定位、公共步骤、公共参数、测试套件等(下)
202 0

热门文章

最新文章