之前我们在做Web页面自动化测试的时候就说过,元素定位是页面自动化测试的第一步。

同理App自动化测试的第一步,也是元素的定位。

在APP中定位元素的话,需要借助一些元素定位工具。

APP中的元素定位工具大致有三种:

  • uiautomatorviewer工具
  • Appium Inspector工具
  • Chrome Inspect工具

提示:本篇文章介绍uiautomatorviewer工具

1、uiautomatorviewer介绍

在开始编写测试代码之前,需要获取待测应用的UI元素。可以通过uiautomatorviewer工具来获取应用的界面截图并分析。

uiautomatorviewer工具获取当前UI界面的快照,提供一个可视化的界面,来查看UI布局结构,并且可以查看各个控件的相关属性。利用这些信息来选择特定的UI组件,并创建APP中的自动化UI测试代码。

总结:

  • uiautomatorviewer工具是专门用来定位Android系统APP中原生页面中的元素。
  • uiautomatorviewer是Android SDK里的一个工具,这个工具在Android SDK目录下的tools文件夹下。(IOS系统在tools\bin的子目录下)
  • uiautomatorviewer使用简单,速度也相对比较快。

2、uiautomatorviewer工具打开方式

打开uiautomatorviewer工具,如下图:

uiautomatorviewer.bat是一个windows系统下的可执行文件,双击即可打开。

双击打开uiautomatorviewer.bat,先会出现一个黑窗口,然后就会出现一个uiautomatorviewer工具的界面。

3、uiautomatorviewer布局介绍

uiautomatorviewer布局如下图所示:

整个界面分四个区域:

  1. 工作栏区

    在工作栏中共有4个按钮,从左至右分别用于:

    • 打开已保存的界面快照和布局。
    • 抓取当前手机屏幕截图(Device Screenshoot uiautomator dump)。
    • 带有压缩层次结构的设备屏幕截图(Device Screenshoot with Compressed Hierarchy (uiautomator dump –compressed)

      第二按钮与第三按钮的区别在于:

      第二按钮把全部布局呈现出来,而第三按钮只呈现有用的控件布局。

      比如存在一个Frame,但只有装饰功能,那么点击第三按钮时,可能不被呈现。
    • 保存当前屏幕界面的快照和布局。
  2. 屏幕截图区,显示当前屏幕显示的布局图片。
  3. 布局区,已XML树的形式,显示控件布局。
  4. 控件属性区,当点击某一控件时,将显示该控件属性信息。

4、uiautomatorviewer工具的使用

1)uiautomatorviewer工具使用前提

  • 打开uiautomatorviewer工具。
  • 所测试设备是开机状态(手机或者模拟器)。
  • 确保电脑与设备是链接状态,也就是cmd进入命令行终端,

    输入adb connect 127.0.0.1:21503链接逍遥模拟器,

    输入adb devices能够获取设备名称。

如果电脑没有与设备不是链接的状态,点击uiautomatorviewer工具栏中的第二个按钮,来抓取手机界面是抓取不到的。

如下图所示:

2)抓取当前手机的屏幕界面

就是点击uiautomatorviewer工具栏中的第二个按钮进行抓取:

说明:点击完后,设备上的界面就会被同步到这个工具的左侧,点击左侧需要查看的控件,在这个工具的右侧就可以看到这个控件对应的详细信息。

提示:

uiautomatorviewer能够不能抓取手机屏幕时,可以先关闭和重启adb服务。

执行命令如下:

  • adb kill-server
  • adb start-server

3)定位其他页面里的元素

如果需要继续定位其他页面里的元素,先在设备中操作到要定位元素的页面后,再次点击工具左上角的拍照按钮,就可以抓取最新的页面元素信息。

例如:

定位完设置APP中界面的元素,我又想定位淘宝首页的页面元素。

首先在手机中打开淘宝APP,进入到淘宝APP的首页。

然后点击uiautomatorviewer工具栏中的第二个按钮,来抓取新的界面。

4)保存

点击保存按钮,可保存抓取的屏幕截屏和一个.uix文件(XML格式的页面布局,就相当于页面源码)。

我们可以看到文件夹中会有上面说过的两个文件。

我们也可以对保存的文件进行重命名,方便我们以后的使用和管理。

5)打开已保存的界面快照和布局

点击打开文件,可以将之前保存好的页面屏幕截图和.uix文件导入进来。

点击OK之后,就选显示以前保存过的界面信息了。

如下图所示:

导入后即可进行元素定位操作。

说明:

我们先介绍uiautomatorviewer工具的使用,关于如何定位页面中的元素,之后的文章会详细说明。

『与善仁』Appium基础 — 17、元素定位工具(一)的更多相关文章

  1. 『与善仁』Appium基础 — 18、元素定位工具(二)

    目录 1.Appium Inspector介绍 2.Appium Inspector打开方式 3.Appium Inspector布局介绍 4.Appium Inspector工具的配置 5.Appi ...

  2. 『与善仁』Appium基础 — 19、元素定位工具(三)

    目录 1.Chrome Inspect介绍 2.Chrome Inspect打开方式 3.Chrome Inspect工具的使用 (1)Chrome Inspect工作前提 (2)Chrome Ins ...

  3. 『与善仁』Appium基础 — 20、Appium元素定位

    目录 1.by_id定位 2.by_name定位 3.by_class_name定位 4.by_xpath定位 5.by_accessibility_id定位 6.by_android_uiautom ...

  4. 『与善仁』Appium基础 — 27、模拟手势点击坐标

    目录 1.模拟手势点击坐标 2.tap()用法 3.练习 4.弊端 1.模拟手势点击坐标 在定位元素的时候,你使出了十八班武艺还是定位不到,怎么办呢?(面试经常会问) 那就拿出绝招:点击元素所在位置的 ...

  5. 『与善仁』Appium基础 — 28、webview的操作方式

    目录 1.先了解什么是Hybrid(混合) 2.识别Webview 3.context上下文 4.Webview和原生页面之前的切换 5.综合练习 我们之前说过的所有操作,都是对原生页面的操作. 在手 ...

  6. 『与善仁』Appium基础 — 22、获取元素信息的操作(一)

    目录 1.获取元素文本内容 (1)text()方法 (2)get_attribute()方法 (3)综合练习 2.获取元素在屏幕上的坐标 1.获取元素文本内容 (1)text()方法 业务场景: 进入 ...

  7. 『与善仁』Appium基础 — 23、操作滑动的方式

    目录 1.swipe滑动 2.scroll滑动 3.drag拖拽事件 4.滑动方法小结 5.拓展:多次滑动 6.综合练习 在Appium中提供了三种滑动的方式,swipe滑动.scroll滑动.dra ...

  8. 『与善仁』Appium基础 — 25、APP模拟手势高级操作

    目录 1.手指轻敲操作 2.手指按下和抬起操作 3.等待操作 4.手指长按操作 5.手指移动操作 6.综合练习 APP模拟手势的动作都被封装在TouchAction类中,TouchAction是App ...

  9. 『与善仁』Appium基础 — 8、Appium自动化测试框架介绍

    目录 1.主流的移动端自动化测试框架 (1)Robotium (2)Macaca (3)Appium 2.自动化测试工具的选择 3.Appium简介 提示:我们前面说的Android环境搭建和adb命 ...

随机推荐

  1. 洛谷 P6075 [JSOI2015]子集选取

    链接:P6075 前言: 虽然其他大佬们的走分界线的方法比我巧妙多了,但还是提供一种思路. 题意: %&¥--@#直接看题面理解罢. 分析过程: 看到这样的题面我脑里第一反应就是DP,但是看到 ...

  2. 最小的K个数 牛客网 剑指Offer

    最小的K个数 牛客网 剑指Offer 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. class Solution ...

  3. P2774 方格取数问题(最小割)

    P2774 方格取数问题 一看题目便知是网络流,但由于无法建图.... 题目直说禁止那些条件,这导致我们直接建图做不到,既然如此,我们这是就要逆向思维,他禁止那些边,我们就连那些边. 我们将棋盘染色, ...

  4. python环境搭建、pycharm安装

    一.      实验目标 (1)  Python环境搭建 (2)  会pycharm安装和使用 (3)  了解python程序设计流程 二.      实验内容 1.勾选Add Python 3.7 ...

  5. Kafka 消费迟滞监控工具 Burrow

    Kafka 官方对于自身的 LAG 监控并没有太好的方法,虽然Kafka broker 自带有 kafka-topic.sh, kafka-consumer-groups.sh, kafka-cons ...

  6. Java多线程之Atomic:原子变量与原子类

    Atomic简介 ​ Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类这个包里面提供了一组原子变量类. ​ 其基本的特性就是在多线程 ...

  7. 亚马逊开发者用户授权 AWS

    在开发之前最好的方法是先拿到官网的API文档简单的预览一遍 这里有个中文文档:AWS 开发中文文档 需要准备: 注册成为开发者 创建 AWS 账户 创建 IAM 用户 创建 IAM 策略 创建 IAM ...

  8. MyScript 开发文档

    一.IInk SDK runtime 1.1 引擎创建 1.2 对象释放 1.3 获取并设置配置 配置 访问配置 配置识别 二.文件存储 2.1 支持的内容的类型 2.2 模型结构 2.3 Conte ...

  9. c++学习笔记(八)

    内联函数 概念 内联(inline)函数是c++为提高程序运行速度所做得一项改进. 与常规函数的区别不在于编写方式,而在于被调用时的运行机制不同----编译器使用函数代码替换函数调用. 引用内联函数时 ...

  10. 记录线上APP一个排序比较引发的崩溃 Comparison method violates its general contract!

    最近在做产品需求的时候上线了一个新的产品需求,给用户多了一种新的排序排序规则,更加方便用户找到自己想要的东西.新版本发布后,QA 给我发了一个 线上崩溃 bug 链接,具体内容如下: 看到上面的链接, ...