App自动化测试 元素定位(1)

接触过 UI 自动化的同学都应该清楚,当你要使用自动化工具操作界面元素时,首先必须要找到这个元素。在 Web UI 中,我们使用 selenium 进行自动化,定位方式的查看使用的是浏览器自带的开发者工具

在 App 测试中呢?如何查看页面元素?这又不像 Web 页面,有浏览器。就会很困惑!

App 由于没有基于浏览器运行,那就需要借助一些工具了。目前主要有两种:

  • 由 Google 提供,在 Android SDK 环境 tools 目录下的 UIAutomatorviewer
  • 由 Appium 桌面版提供的定位工具,inspector

注意,这里讲的定位工具都是针对原生应用。混合应用和 web 应用后面再专门来谈。

没有 Android SDK 的同学请参看《Android Appium环境搭建》

那么哪个工具好用方便呢?都难用! # 手动捂脸 (*/ω\*)

但是难用归难用,总还得用啊。当然还有一种套路,根据页面上显示的文字来定位,这个需要自己封装方法,这个后面专门讲。

先讲讲难用的工具们吧!

UIAutomatorviewer

你可以在 Android SDK 目录下的 tools 中找到它。

UIAutomatorViewer位置

点开后出现如下界面,当你连接模拟器后,就可以点击 ② 或 ③ 按钮连接设备桌面,用来查看页面元素。


UIAutomatorViewer

保证设备已经连接。可通过adb devices查看。(不熟悉 adb 命令的话请先看 adb 命令介绍)

> adb devcices
List of devices attached
192.168.213.101:5555    device

在模拟器或设备上打开待测应用,这里以墨迹天气为例,点击 UIAutomatorViewer 上的 ② 按钮,连接设备,连接成功后界面如下:

UIAutomatorViewer
  • 左边部分为当前设备屏幕截图,可以直接点击你想查看的元素;
  • 右边部分分为上下两部分:上半部分为元素的层级,下半部分为当前选中元素的属性展示。

如果连接不成功,重启一下 adb 服务。

在实际使用过程中,可以将页面截图保存下来,以后在写自动化脚本的时候,不用每次都连接设备打开 App,可以直接打开保存的截图,方便快捷。

保存后有两个文件,屏幕截图和 xml 格式的屏幕层级关系(uix文件):


UIAutomatorViewer 保存

下次使用时直接打开保存的截图就可以进行定位了。


打开已保存的截图

下面是一个大致的 Appium 和 Selenium 定位方式的区别:

定位方式 Appium Selenium 说明
id resource-id id 唯一性较强的定位方式
class name class class web 中的 class 为 css 样式类,而 App 中表示控件类型
name text name Appium 1.5 以前 name 定位使用 text 属性,1.8 以后取消
accessibility id content-desc Android中独有的定位方式
xpath 使用class表示层级 使用标签名表示层级 //android.widget.TextView[@resource-id="com.moji.mjweather:id/cm3"]
css selector css 选择器语法
UIAutomator 使用 Android 官方测试框架 UIAutomator 定位 Android 独有定位方式

其余 selenium 中的定位方式,如 link text 等,在 Appium 中不存在。

你可能感兴趣的:(App自动化测试 元素定位(1))