首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自动化测试定位方式那么多,应该选哪个?

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

原创
作者头像
霍格沃兹测试开发Muller老师
发布于 2024-04-28 02:46:25
发布于 2024-04-28 02:46:25
2180
举报

简介

定位策略是用于在自动化测试中定位移动应用界面元素的方法和策略。通过选择合适的定位策略,测试人员可以定位和操作应用程序的各种控件,如按钮、文本框、下拉列表等。常见的定位策略包括 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 完成元素定位。
    • 结合隐式等待。
下拉框/日期控件定位
  • 场景:
    • <input>标签组合的下拉框无法定位。
    • <input>标签组合的日期控件无法定位。
  • 解决:
    • 面对这些元素,可以引入 JS 注入技术来解决问题。
文件上传定位
  • 场景:
    • input 标签文件上传。
  • 解决:
  • input 标签直接使用 send_keys() 方法。

总结

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
自动化-Appium-元素定位(Python版)
本章节讲解是指在原生(APP)下进行元素定位,如果是Web(移动端里的浏览器)、混合(APP与WEBVIEW)里含有WEBVIEW页面进行元素定位,元素定位方法同Selenium一致,则可以参考Selenium章节里的元素定位子章节。
wangmcn
2022/07/25
2.3K0
自动化-Appium-元素定位(Python版)
集成AI的移动自动化测试
前一阵子小编看到了爱奇艺Android架构师的一篇文章《爱奇艺基于AI的移动自动化框架的设计与实践》。介绍了了一种基于AI算法的自动化测试框架Aion,该框架融合了传统图像处理和深度学习方案。虽然目前该框架还未开源,但是给了小编很多启发。
用户5521279
2020/02/24
1.4K0
集成AI的移动自动化测试
技术分享 | app自动化测试(Android)--高级定位技巧
通常使用定位器定位页面上的元素会发生一些定位不到元素,或者定位失败的情况。有可能是页面上元素不唯一,有可能是页面发生变化。这节介绍定位元素的高级用法,使用层级关系定位或者多重属性定位的方式来确定元素的唯一性,从而更精准,更稳定的定位到想要的元素。
霍格沃兹测试开发
2022/06/13
1.6K0
Appium元素定位方式
控件的基础知识和selenium一样,appium为移动端抽象出了一个控件模型,称为dom结构;会把所有的控件都理解为xml文件,在xml文件里,每个控件都有自己的类型和属性;
Hogwarts_测试
2022/06/09
1.3K0
自动化测试之路 —— Appium元素定位
当今社会,人们的生活几乎已经无法离开形形色色的APP了,它提供给我们的便利与服务意义远远超出了其本身的软件价值。作为测试来说移动应用也早已是各大互联网公司的拳头产品,其本身的开发周期短,附属产品价值高等特性决定了今后的主导地位。
Austin_zhai
2022/08/29
1.1K0
自动化测试之路 —— Appium元素定位
12.UI自动化测试框架搭建-编写一个APP自动化
APP自动化测试和Web自动化测试的不同之处在于它的环境搭建更复杂,不过环境搭建之后,具体的操作步骤是类似的。都是定位元素+操作元素
zx钟
2022/03/29
7330
12.UI自动化测试框架搭建-编写一个APP自动化
Appium自动化(10) - appium高级元素定位方式之 UI Automator API 的详解
https://www.cnblogs.com/poloyy/category/1693896.html
小菠萝测试笔记
2020/06/09
1.5K0
Appium自动化(10) - appium高级元素定位方式之 UI Automator API 的详解
基于Appium的移动端UI自动化测试
移动端APP是一个复杂的系统,不同功能之间耦合性很强,很难仅通过单元测试保障整体功能。UI测试是移动应用开发中重要的一环,但是执行速度较慢,有很多重复工作量,为了减少这些工作负担,提高工作效率,需要引入可持续集成的自动化测试方案。
测试开发社区
2020/05/26
3.1K0
自动化测试——上航企业内训总结
随着互联网技术的发展,现在的软件系统需要处理的业务越来越复杂,而客户对于软件的需求变化也越来越快,这就要求我们软件从业人员快速响应客户需求。在互联网企业,微服务下的敏捷开发体系、自动化测试、智能运维体系都发展得如火如荼。在前几年也许传统软件行业的还在观望着,但是在devops火热的今天,不少的传统企业也都开始向互联网企业学习,引入devops、敏捷开发中的各种技术,以提高他们的开发效率。
TestOps
2022/04/07
2800
自动化测试——上航企业内训总结
App自动化之dom结构和元素定位方式(包含滑动列表定位)
控件的基础知识和selenium一样,appium为移动端抽象出了一个控件模型,称为dom结构;会把所有的控件都理解为xml文件,在xml文件里,每个控件都有自己的类型和属性;
霍格沃兹测试开发
2022/04/24
8510
不写一行代码实现mobile自动化
我们写移动自动化的时候,一般用appium, 感觉appium用起来太重了。 首先装环境得搞半天,然后启动一个driver要填很多参数,一个参数没填,或者填错了,就启动不起来。 如果是小白,遇到各种坑。好不容易跑起来了,写了一通代码,结果项目迭代了,又得重写。 有没有一种轻量的,可以录制的工具可以用呢? python-uiautomator2 自动化测试开源工具,其封装了谷歌自带的 uiautomator2 测试框架,可以运行在支持 Python 的任一系统上。
赵云龙龙
2021/04/02
1.2K0
不写一行代码实现mobile自动化
史上最全 Appium 自动化测试从入门到框架实战精华学习笔记(三)
本系列文章汇总了从 Appium 自动化测试从基础到框架高级实战中,所涉及到的方方面面的知识点精华内容(如下所示),希望对大家快速总结和复习有所帮助。
霍格沃兹测试开发
2022/05/30
1.3K0
Appium+python自动化29-toast消息
前言 appium1.5以后的版本才支持toast定位,并且 'automationName'得设置为'Uiautomator2',才能捕获到。 一、 Supported Platforms 1.查看appium v1.7版本[官方文档](https://github.com/appium/appium/) **Supported Platforms** Appium supports app automation across a variety of platforms, like iOS, Andro
上海-悠悠
2018/04/08
1.7K0
Appium+python自动化29-toast消息
appium 元素定位方法总结(一)
在做UI自动化的时候,有一部分精力是定位元素,元素定位得准不准,直接影响自动化的成败和效率。 mobile和web一样,也是通过driver来定位元素的。selenium有8种定位方法,appium有哪些定位方法呢? 常用的方法有:
赵云龙龙
2021/04/23
5.3K0
appium 元素定位方法总结(一)
技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别
Toast 是 Android 系统中的一种消息框类型,它属于一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。它不同于 Dialog,它没有焦点。Toast 的设计思想是尽可能的不引人注意,同时还向用户显示信息希望他们看到。
霍格沃兹测试开发学社
2022/06/24
5010
快速上手App自动化测试利器,Toast原理解析及操作实例
Toast 是一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。
霍格沃兹测试开发Muller老师
2024/03/20
2200
App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》
App 自动化目前用得是 Appium,有 Python 版本的Uiautomator2。这个是直接通过Uiautomator2去做的,一个是利用中间的 Appium 去做。Appium 跨平台跨语言。
清菡
2020/12/16
7330
App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》
Python 自动化,Appium 凭什么使用 UiAutomator2?
UiAutomator 是 Google 开发的一款运行在 Android 设备上的 UI 自动化测试工具,基于JAVA语言,使用它有一个限制,就是必须打包成 APK 或 JAR,然后上传到设备,才能运行
AirPython
2020/08/28
3.5K0
Python 自动化,Appium 凭什么使用 UiAutomator2?
Appium之「元素定位和UiAutomator表达式」
xpath 相对定位:如果相对定位中这个元素是有 id 的,这个 id 是唯一的,xpath 定位中优先通过 id 来定位。
清菡
2020/10/05
1.8K0
技术分享 | app自动化测试(Android)--高级定位技巧
通常使用定位器定位页面上的元素会发生一些定位不到元素,或者定位失败的情况。有可能是页面上元素不唯一,有可能是页面发生变化。这节介绍定位元素的高级用法,使用层级关系定位或者多重属性定位的方式来确定元素的唯一性,从而更精准,更稳定的定位到想要的元素。
Hogwarts_测试
2022/06/13
9640
推荐阅读
相关推荐
自动化-Appium-元素定位(Python版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档