控件定位工具

1.UIAutomatorView

Android SDK自带的定位工具

位置:D:\software-fan\android-sdk_r24.4.1-windows\android-sdk-windows\tools\uiautomatorviewer.bat

启动

直接双击 uiautomatorviewer.bat文件即可

工具界面分析

红色圈:功能按钮

从左往右四个按钮分别是

  1. 打开已保存的布局

  2. 获取详细布局

  3. 获取精简布局

  4. 保存当前布局:点击保存,将存储两个文件,一个是图片文件,一个是.uix文件(XML布局结构)

黄色圈:手机屏幕截图区域

显示截图手机屏幕的布局图片

蓝色圈:布局区

以XML树的形式,展示界面上的控件布局

紫色圈:控件属性区

点击某个控件后,可以查看该控件的所有属性

注意:点击布局按钮只能获取手机当前所处的界面,如果进入新的界面,需要再次点击该按钮来重新获取当前界面,它并不能自动刷新

UIAutomatorviewer 的局限性

  1. 不能校验我们写的定位表达式是否正确定位到控件

  2. 连接不够稳定

  3. 不能模拟用户动作

2.Appium Desktop inspector

appium server 自带的定位工具

Appium Desktop 的 Inspector 的优势

  1. 可以校验定位表达式(如:XPATH表达式)

  2. 通过设置Desired Capabilities来连接手机,比较稳定

  3. 可以模拟用户动作(如:点击,返回,滑动等操作)

  4. 可以录制一系列操作,然后转换成代码

Inspector 的入门使用

  1. 首先,要启动Appium Server

  2. 然后,在窗口点击右上角第一个图标,随后可弹出一个窗口

  3. 输入好Desired Capabilities后,点击【Start Session】就可以了

Desired Capabilities

可以直接将下面的值改了,然后复制粘贴到右侧的 JSON Representation 内

{
  "platformName": "Android",
  "platformVersion": "7.0",
  "deviceName": "192.168.1.10:5555",
  "appPackage": "com.tal.kaoyan",
  "appActivity": " com.tal.kaoyan.ui.activity.SplashActivity",
  "automationName": "UiAutomator1",
  "noReset": true
}

Inspector 定位控件界面的详细介绍

紫色圈:截图的手机界面

红色圈:顶部操作栏

从左往右的按钮依次是

  • Select Element:选择元素

  • Swipe By Coordinates:选择滑动的起始和结束位置

  • Tap By Coordinates:使得手机界面变换可操作状态,可以点击界面的元素

  • Back:模拟Android的返回键

  • Refresh Source & Screenshot:刷新页面,用来重新获取手机当前界面

  • Start Recording:录制操作

  • Search for element:校验定位表达式

  • Copy XML Source to Clipboard:复制XML树

  • Quit Session & Close Inspector:退出当前Session

蓝色圈:XML树

以XML树的形式,展示界面上的控件布局

黄色圈:控件属性区域

选择某个控件,在这里可以显示该控件的所有属性和值

Search for element 的介绍

选择你要校验的定位类型,然后输入你写的表达式,最后【Search】,就可以看到结果了

如果能找到Elements的话表达式就是正确的哦,然后你还可以针对该元素进行一些操作

注意resource-id不唯一

3.Weditor

Uiautomator python 第三方库 ,通过python脚本实现对appUI自动化

安装:

pip install -U uiautomator2

初始化

python -m uiautomator2 init

安装Weditor

pip install -U weditor

安装好之后,就可以在命令行运行weditor --help确认是否安装成功了。

运行

python -m weditor

弹出浏览器窗口, 输入机器的信息, 点击Connnect, 连接成功之后再点击Reload