环境搭建好了,其他方面的知识也准备的差不多了,那么我们就开始下一步元素定位,元素定位宏哥主要介绍如何使用 uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. 此外在介绍另一款工具:Inspector。
uiautomatorviewer 是 android-sdk 自带的一个元素定位工具,非常简单好用,使用 uiautomatorviewer,你可以检查一个应用的 UI 来查看应用的布局和组件以及相关的属性。
那么宏哥先来给各位小伙伴们介绍大哥--uiautomatorviewer,再来介绍小弟--Inspector。
大哥人物简介:
大哥是皇族后裔,但是比刘皇叔强多了。人家有一个好爹--Google。
Android 4.1 发布的,uiautomator 是用来做 UI 测试的。也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期。比如 登陆界面 分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等。
功能性或者黑盒 UI 测试不需要测试人员了解程序如何实现的,只需要验证各种操作的结果是否符合预期即可。这样的测试可以分离团队的开发人员和测试人员。大家各干各的没有太多的交集。
常用的 UI 测试方式就是人工验证啦,就是测试人员拿着各种手机分别安装要测试的程序然后看看是否能正确完成各种预定的功能。但是这种验证方式是非常耗时间的,每次回归都要全部验证一边,并且还容易出现人为错误。比较高效和可靠的 UI 测试方式就是自动化测试。自动化 UI 测试创建测试代码来执行测试任务,各种测试任务分别覆盖不同的使用场景,然后使用测试框架来运行这些测试任务。而 uiautomator 就是你的自动化 UI 测试工具。
Android SDK 在 4.1 中提供了如下工具来支持 UI 自动化测试:
要大哥出山也就是使用该工具,需要满足如下条件:
两种启动方法:
第一种方法:
1、打开目录 D:\software\android-sdk-windows\tools
2、双击启动,启动之后出现如下界面
第二种方法:
1、如果不喜欢双击启动的话,也可以在 cmd 里面通过指令启动
先 cd 到 tools 目录下,然后输入 uiautomatorviewer.bat 回车后启动服务
二、连接手机
1、cmd 打开输入 adb devices,确认手机已连上(以夜神模拟器为例)
2、打开手机淘宝页面,让屏幕处于点亮状态
3、点左上角安卓机器人按钮 Devices Screenshot 按钮刷新页面
** **
1、移动鼠标到需要定位的元素上,如搜索输入框
** **
2、右下角可以看到元素对应的属性
text:好沙发需要好坐垫
resource-id:com.taobao.taobao:id/home_searchedit
class:android.widget.EditText
1、前面一篇启动 app 后,休眠五秒,等待页面加载完成
2、通过 id 来定位到搜索框,然后点击
# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-6-24
@author: 北京-宏哥 QQ交流群:707699217
Project:学习和使用定位元素工具
'''
# 3.导入模块
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android' #android的apk还是IOS的ipa
desired_caps['platformVersion'] = '8.0' #android系统的版本号
desired_caps['deviceName'] = '127.0.0.1:62001' #手机设备名称,通过adb devices 查看
desired_caps['appPackage'] = 'com.taobao.taobao' #apk的包名
desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome' #apk的launcherActivity
#desired_caps['unicodeKeyboard'] = True #使用unicodeKeyboard的编码方式来发送字符串
#desired_caps['resetKeyboard'] = True #将键盘给隐藏起来
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #启动服务器地址,后面跟的是手机信息
# 休眠五秒等待页面加载完成
time.sleep(5)
driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()
# driver.quit()
1、appium 的 webdriver 提供了 11 种元素定位方法,在 selenium 的基础上扩展了三个,可以在 pycharm 里面输入 driver.find_element_by 然后会自动匹配出来
2、多的三种如下,在后面的会详细介绍
driver.find_element_by_accessibility_id()
driver.find_element_by_android_uiautomator()
driver.find_element_by_ios_uiautomation()
(第三个是 ios 的可以暂时不用管)
** 小弟人物简介:**
小弟不是很牛叉,但是小弟的存在必定有小弟存在的必要,之前看了好多文章都要放弃小弟,我觉地不要放弃,没准小弟可以替大哥大哥挡刀呢,呵呵,说笑了,毕竟过河的卒子可以当车!!!
Appium Inspector 是 appium 自带的一个元素定位工具,前边介绍了如何使用 uiautomatorviewer 进行元素定位。这里就学习 Appium Inspector 是如何定位的。
Appium Inspector 对于测试的同学不得不说是一个神器,可以查询到我们需要定位的元素的 id 等各种信息 ,还可以 录制用户行为,翻译成脚本。逆天的是可以翻译成多种语言的脚本。这并不意味着测试的同学可以不用学习语言和编程了,因为机器翻译出的脚本一般很难一次执行成功,其中很可能还需要经过人工修改后才能顺利执行,但是这已经可以为测试脚本的编写带来很大的遍历,所以 Appium Inspector 还是值得我们去学习和使用。
1、先不要启动 appium,因为启动以后就不能操作 appium 设置界面,必须在未启动的时候进行操作
2、点开 android setting 界面(机器人图标)
3、勾选 Application Path,添加被测 app 的路径
4、Devices name 处添加设备名称(adb devices 查看到的)
(注意:通过这种方法也可查看到 apk 的包名和 Launch Activity)
** **
1、手机确保连接电脑(adb devices 查看)(仍然以夜神模拟器为例)
2、点 appium 右上角三角形图标,会启动服务
3、这时候可以看到手机上安装淘宝应用,并会启动淘宝
4、点 appium 右上角的搜索图标
5、点 Inspector Window 界面的 Refresh 按钮刷新界面
1、手机上打开需要单位元素的界面,然后点 Refresh 按钮刷新
2、左边菜单树,可以挨个点开
3、如果想单位界面上的 “是” 和 “否” 按钮,从菜单树就可以看到这两个元素的结构
1、选中左侧菜单树对应的元素,在右下角查看对应属性
1、在使用过程中,你会发现经常会报以下这个错误
2、每次启动都会给你手机上重新安装一次应用
3、并且不能用鼠标指定某个元素,没有 uiautomatorviewer 使用方便
(要是以上三种问题你都遇到了,怎么办???那就放弃吧!!!)
相信很多人在使用过程中,都会遇到中文无法输入问题,宏哥在后续文章里会手把手教大家如何输入中文。
Android SDK 中的 UIAutomator 中本身是不支持网页中的 UI 元素定位,下面介绍几种常用的定位 app 内部的网页的 UI 元素的方法。
一、使用 chrome 浏览器调试移动端网页
这是使用最多的一种方法。首页确保自己的手机已经跟电脑连接且处于开发者模式。
打开PC端的谷歌浏览器,输入chrome://inspect/#devices,会看到下图所示界面:
![](https://image.baidu.com/search/down?url=https://images2018.cnblogs.com/blog/1063571/201803/1063571-20180301160553747-784776548.png)
点击需要测试的网页下方的inspect,且保证手机界面停留在那个页面。
![](https://image.baidu.com/search/down?url=https://images2018.cnblogs.com/blog/1063571/201803/1063571-20180301161001325-2119759971.png)
这样打开后是不是就熟悉了,点击上方红色标记的就可以操作进行定位了~~~
** 二、Android 手机的铺助功能带有 TalkBack**
之前一直用的是谷歌的方法,但是最近发现使用talkback可以直接用UIAutomator定位元素。
Android系统一般自带一个TalkeBack功能。但这里千万要注意:打开之后整个系统的操作都变得不同了!!滑动界面需要两个手指,单击变成双击。打开之后用UiAutomatorViewer获取webview界面的内容,你就会发现原来webview里面获取不到的ui元素,现在已经可以可以获取到了。即使现在你关掉TalkBack,也能获取到,除非重启手机才会回到不能获取的状态,所以开启后我们可以立即关闭,以方便操作。有些手机没有talkBack的可以去应用市场下载。
功能路径:
原生系统:设置 – 辅助功能(Accessibility) – TalkBack
华为EMUI系统:设置 – 高级设置 – 辅助功能 – TalkBack
三、宏哥在小弟哪里遇到的问题
查看 appium 日志的 error 发现没有设备名字报错
将夜神模拟器的名字加上就成功了