如何选择最佳的自动化测试定位策略?

1420 篇文章 61 订阅
1332 篇文章 53 订阅

简介

定位策略是用于在自动化测试中定位移动应用界面元素的方法和策略。通过选择合适的定位策略,测试人员可以定位和操作应用程序的各种控件,如按钮、文本框、下拉列表等。常见的定位策略包括 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。

  • 其它定位。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

元素定位不到

导致 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 完成元素定位。

    • 结合隐式等待。

下拉框/日期控件定位
  • 场景:

    • <input>标签组合的下拉框无法定位。

    • <input>标签组合的日期控件无法定位。

  • 解决:

    • 面对这些元素,可以引入 JS 注入技术来解决问题。

文件上传定位
  • 场景:

    • input 标签文件上传。

  • 解决:

  • input 标签直接使用 send_keys() 方法。

总结

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

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 13
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值