首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >软件测试|App自动化控件定位

软件测试|App自动化控件定位

原创
作者头像
霍格沃兹测试开发Muller老师
发布于 2023-01-09 10:26:03
发布于 2023-01-09 10:26:03
5750
举报

客户端的页面通过 XML 来实现 UI 的布局,页面的 UI 布局作为一个树形结构,而树叶被定义为节点。这里的节点也就对应了我们要定位的元素,节点的上级节点,定义了元素的布局结构。在 XML 布局中可以使用 XPath 进行节点的定位。

App的布局结构

从上面这张图中可以看到最左侧是应用的页面的展示,中间部分展示了这个页面的树形结构的 XML 代码。

其中包含的内容为:

  • 节点 nodedriver.find_element(By.ID, \ "android:id/text1").click()
  • 节点属性:包括 clickable(是否可点击)、content-desc(内容)、resource-id(元素 id)、text(文本)、bounds(坐标)等。通过ID定位在 Android 系统元素的 ID 称为 resource-id,使用页面分析工具比如 Appium Inspector 能够获取元素的唯一标识是 ID 属性,可以使用 ID 进行元素定位,方便快捷。 示例代码如下:

注意 resource-id 对应的属性(包名:id/id 值),在使用这个属性的时候要把它当作一个整体。

当分析工具能抓取到的 content-desc 的属性值是唯一时,可以采用 Accessibility 的定位方式,示例代码:

代码语言:txt
AI代码解释
复制
driver.find_element_by_accessibility_id("Accessibility")

与 Selenium 类似,可以使用 XPath 的定位方式完成页面的元素定位。XPath 分为绝对路径定位与相对路径定位两种形式,下面介绍的都是相对定位的形式。

XPath:resource-id 属性定位

元素可以通过 resource-id 定位。

格式://*@resource-id='resource-id属性'

示例代码:

代码语言:txt
AI代码解释
复制
driver.find_element(By.XPATH, \
'//*[@resource-id="rl_login_phone"]')

XPath:text 属性定位

元素可以通过 text 文本属性定位。

格式:

//*@text=’text文本属性’

示例代码:

代码语言:txt
AI代码解释
复制
driver.find_element(By.XPATH,'//*[@text="我的"]')

XPath:class 属性定位

元素可以通过 class 定位。

格式:

//*@class=’class 属性’

示例代码:

代码语言:txt
AI代码解释
复制
driver.find_element(By.XPATH,\
'//*[@class="android.widget.EditText"]')

XPath:content-desc 属性定位

元素可以通过 content-desc 定位。

格式:

//*@content-desc='content-desc 属性'

示例代码:

代码语言:txt
AI代码解释
复制
driver.find_element((By.XPATH,\
'//*[@content-desc="搜索"]')

使用 Android SDK(sdk/tools/uiautomatorviewer)路径下自带的 uiautomatorviewer 工具也可以抓取当前页面的元素。

提前配置 sdk/tools/路径到环境变量 $PATH 中,直接在命令行输入下面的命令:

代码语言:txt
AI代码解释
复制
uiautomatorviewer

可以打开下面这样一个页面,点击页面左上角第二个图标(Android 手机图标),就可以获取下面的 uiautomatorviewer 快照图:

uiautomatorviewer 抓取快照展示出来的元素属性是经过解析的,我们要查看 XML DOM 的真实结构可以打印 pagesource ,得到的内容如下,红色框起来的部分为上图的定位的 XML DOM 中的一个节点:

通过图片分析,android.widget.TextView 是文本类型的节点,其中包含的属性信息都在上面的 uiautomatorviewer 快照图中有展示。如果只想定位 Android 系统的页面元素,可以直接使用 uiautomatorviewer,速度快并且不需要配置任何参数,直接点击获取页面的图标就可以将客户端页面抓取出来。

uiautomatorviewer 只能抓取 android8 以下的版本,如果要抓取 android8 以上的版本的页面信息,可以使用 Appium Inspector 或 WEditor

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

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

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术分享 | app自动化测试(Android)--高级定位技巧
通常使用定位器定位页面上的元素会发生一些定位不到元素,或者定位失败的情况。有可能是页面上元素不唯一,有可能是页面发生变化。这节介绍定位元素的高级用法,使用层级关系定位或者多重属性定位的方式来确定元素的唯一性,从而更精准,更稳定的定位到想要的元素。
霍格沃兹测试开发
2022/06/13
1.6K0
自动化-Appium-元素定位(Python版)
本章节讲解是指在原生(APP)下进行元素定位,如果是Web(移动端里的浏览器)、混合(APP与WEBVIEW)里含有WEBVIEW页面进行元素定位,元素定位方法同Selenium一致,则可以参考Selenium章节里的元素定位子章节。
wangmcn
2022/07/25
2.4K0
自动化-Appium-元素定位(Python版)
技术分享 | app自动化测试(Android)--App 控件定位
客户端的页面通过 XML 来实现 UI 的布局,页面的 UI 布局作为一个树形结构,而树叶被定义为节点。这里的节点也就对应了要定位的元素,节点的上级节点,定义了元素的布局结构。在 XML 布局中可以使用 XPath 进行节点的定位。
霍格沃兹测试开发
2022/06/08
1.2K0
Appium+python自动化12-appium元素定位
前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一、id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性
上海-悠悠
2018/04/08
1.2K0
Appium+python自动化12-appium元素定位
自动化测试之路 —— Appium元素定位
当今社会,人们的生活几乎已经无法离开形形色色的APP了,它提供给我们的便利与服务意义远远超出了其本身的软件价值。作为测试来说移动应用也早已是各大互联网公司的拳头产品,其本身的开发周期短,附属产品价值高等特性决定了今后的主导地位。
Austin_zhai
2022/08/29
1.1K0
自动化测试之路 —— Appium元素定位
技术分享 | app自动化测试(Android)–App 控件交互
通常获取到元素之后,可以调用 click() 方法来实现对这个元素的点击操作。示例代码如下:
霍格沃兹测试开发
2022/06/14
8450
App自动化测试|原生app元素定位方法
通过appium inspector工具,可以获取元素的相关信息;在appium中提供了一系列的元素定位API,通过在这些API中输入指定的元素信息,就能完成元素定位,定位元素后就进行对元素进行自动操作。
霍格沃兹测试开发Muller老师
2023/01/31
1K0
appium 元素定位方法总结(一)
在做UI自动化的时候,有一部分精力是定位元素,元素定位得准不准,直接影响自动化的成败和效率。 mobile和web一样,也是通过driver来定位元素的。selenium有8种定位方法,appium有哪些定位方法呢? 常用的方法有:
赵云龙龙
2021/04/23
5.4K0
appium 元素定位方法总结(一)
技术分享 | app自动化测试(Android)--高级定位技巧
通常使用定位器定位页面上的元素会发生一些定位不到元素,或者定位失败的情况。有可能是页面上元素不唯一,有可能是页面发生变化。这节介绍定位元素的高级用法,使用层级关系定位或者多重属性定位的方式来确定元素的唯一性,从而更精准,更稳定的定位到想要的元素。
Hogwarts_测试
2022/06/13
9900
Appium之「元素定位和UiAutomator表达式」
xpath 相对定位:如果相对定位中这个元素是有 id 的,这个 id 是唯一的,xpath 定位中优先通过 id 来定位。
清菡
2020/10/05
1.8K0
appium+python自动化58-xpath定位
3.class属性唯一的话,可以通过class属性定位到,定位class属性有两种方法
上海-悠悠
2018/07/25
1.5K0
appium+python自动化58-xpath定位
自动化-Appium-元素定位(Java版)
本章节讲解是指在原生(APP)下进行元素定位,如果是Web(移动端里的浏览器)、混合(APP与WEBVIEW)里含有WEBVIEW页面进行元素定位,元素定位方法同Selenium WebDriver一致,则可以参考Selenium章节里的元素定位子章节。
wangmcn
2022/07/25
1.8K0
自动化-Appium-元素定位(Java版)
技术分享 | app自动化测试(Android)--App 控件交互
通常获取到元素之后,可以调用 click() 方法来实现对这个元素的点击操作。示例代码如下:
Hogwarts_测试
2022/06/14
5430
XPath定位如何在App自动化测试中大显神威
和selenium类似,作为App自动化测试的主流框架,appium也是以webdriver为基础来自动化操作App的,所以对于元素定位,其实appium与selenium也是类似的,只是appium还有自己的安卓原生定位方式等方法,但是关于ID定位,name定位,xpath定位等,appium也是支持的,本篇文章就来给大家介绍一下xpath定位是如何在appium中大显神威的。
霍格沃兹测试开发Muller老师
2024/03/26
3210
Appium元素定位方式
控件的基础知识和selenium一样,appium为移动端抽象出了一个控件模型,称为dom结构;会把所有的控件都理解为xml文件,在xml文件里,每个控件都有自己的类型和属性;
Hogwarts_测试
2022/06/09
1.4K0
App自动化测试|Appium元素定位工具
元素定位主要用来获取元素信息,获取元素信息后才能用appium提供的相关API去识别和操作元素。
霍格沃兹测试开发Muller老师
2023/01/13
1.5K0
App自动化之dom结构和元素定位方式(包含滑动列表定位)
控件的基础知识和selenium一样,appium为移动端抽象出了一个控件模型,称为dom结构;会把所有的控件都理解为xml文件,在xml文件里,每个控件都有自己的类型和属性;
霍格沃兹测试开发
2022/04/24
8580
技术分享 | app自动化测试(Android)-- 特殊控件 Toast 识别
Toast 是 Android 系统中的一种消息框类型,它属于一种轻量级的消息提示,常常以小弹框的形式出现,一般出现 1 到 2 秒会自动消失,可以出现在屏幕上中下任意位置。它不同于 Dialog,它没有焦点。Toast 的设计思想是尽可能的不引人注意,同时还向用户显示信息希望他们看到。
霍格沃兹测试开发学社
2022/06/24
5070
Python Appium 安卓自动化测试 基本使用 - Phone Spider
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用
EXI-小洲
2023/10/16
6810
Python Appium 安卓自动化测试 基本使用 - Phone Spider
2.UI自动化测试框架搭建-元素查找
在 1.UI自动化测试框架搭建-yaml文件管理定位元素 中已经可以拿到元素了,后面就需要对元素进行操作。所有操作最基础的就是要先找到元素
zx钟
2022/03/29
3990
相关推荐
技术分享 | app自动化测试(Android)--高级定位技巧
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档