十分钟弄懂最快的APP自动化工具uiautomator2(入门到精通)
目录
前言
一、介绍
二、环境部署
三、编写百度贴吧首页脚本
四、uiautomator2和appium运行速度比较
前言
相信很多使用appium做过APP自动化的人都深有感触:
- appium运行慢、时间长
- uiautomatorviewer定位元素时得关掉appium server
- 在低版本的appium上获取toast需要切换automationName
现在有一款自动化测试工具uiautomator2,它几乎完美的避免了以上的问题。简单易学,对新手足够友好。本次我们介绍一下这款工具,让你在十分钟之内能迅速掌握它。
一、介绍
uiautomator2是uiautomator的升级版,uiautomator是Google开发的一款用来做安卓自动化测试的Java库,uiautomator2则是将uiautomator中的接口封装成了Python库。因此它支持的语言为Python
优点主要概括如下:
- 环境搭建简单方便
- 执行速度很快
- UI元素定位便捷好用、可视化好
- 获取toast非常简单
根据官方文档,要求:
- Andorid版本 4.4+
- Python版本 3.6+
二、环境部署
1、安装adb并配置环境变量
这里不做详述,网上的教程很多。安装完查看一下版本信息,能出现具体的版本号说明安装成功
2、安装python的uiautomator2库
命令:
pip install -U uiautomator2
3、安装atx-agent
这一步的目的是从github上下载atx-agent,推送到手机,作为服务端,因此先要保证adb devices能看到模拟器上的连接。这里开一台夜神模拟器作为演示
开始安装atx-agent,命令:
python-m uiautomator2 init
安装成功后,可以看到模拟器桌面出现一个小汽车图标,这个就是atx.apk
4、安装weditor
命令:
pip install -U weditor
weditor是基于浏览器的UI元素查看器,安装成功后我们做个演示
在命令行输入 weditor 会自动打开浏览器,在页面上输入模拟器的设备序列号,点击Connect,然后点击Dump Hierarchy刷新,可以看到模拟器的界面
打开百度贴吧,弹出隐私政策弹窗,点击UI查看器上的刷新按钮(当然你也可以打开实时,这样会自动刷新),鼠标选中同意,在右边就可以看到一些元素定位方式,如resourceId、Xpath等。是不是很方便,最方便的是它可以在运行的时候,同时开着weditor UI查看器
三、编写百度贴吧首页脚本
这里我们一步一步来,通过编写百度贴吧自动化测试的用例,来说明uiautomator2这个工具提供给我们的一些方法。为了使得代码更直观一点,这里就不使用PO模式了,直接把每一步写在一个模块中
1、先创建一个工程u2-autotest,然后在其下创建一个模块test_tieba.py
2、导入uiautomator2库,取个别名u2,然后使用u2的connect_usb()方法连接,这个方法的参数是设备序列号(可以通过adb devices获取)。连接成功后返回的device对象,我们取名为d,怎么检查有没有连接上?使用d.info能得到设备的基本信息,说明已经连接成功
3、启动指定的app,其语法是:
d.app_start(“指定的包名”)
怎么获取包名,可以打开app,然后打印d.info,得到的结果里的currentPackageName即是包名
4、然后点击百度贴吧,出现的第一个页面就是隐私政策页,打开weditor UI查看器,刷新后鼠标移动到同意按钮上,可以看到有两种定位方式可选择,一种是resourceId,一种是xpath,这里选择resourceId
在uiautomator2里resourceId的定位方式是这样的:
d(resourceId="元素定位表达式")
但是我们想想,能不能直接这样写
答案是否定的,因为启动app后元素控件不会立即出现,因此需要等待时间,在uiautomator2中你可以用强制等待time.sleep(),也可以使用隐性等待implicitly_wait(),这和appium、selenium是一致的。
软件测试学习摸鱼群
隐性等待的语法:
d.implicitly_wait(等待时长) #单位是s
整理下代码,加上隐性等待时长10s,隐性等待只需要加一次,全局通用。
不管是等待第几个元素,等待时长都是10s,但是如果第一个元素是2s出现,第二个元素是5s出现,那么第一个元素实际等待时长只是2s,第二个只是5s,元素出现就会进行下一步操作,而不像强制等待一直要等够设置的时长。因此隐性等待相对比较节约时间
5、点击同意后,我们进入滑屏页面
滑屏操作在uiautomator2中是swipe()方法,和appium类似,sx, ex和sy,ey分别表示起点和终点的坐标
d.swipe(sx, sy, ex, ey, 0.5)
那么起点和终点的坐标如何获取?
为了适应不同的分辨率,可以获取到屏幕的尺寸,然后分别乘以系数。
获取屏幕尺寸的语法是:
d.window_size()
我们看到首页滑动屏幕需要向左滑2次,因此可以写个for循环。这里有几点需要注意下:
- 为了提高屏幕滑动的稳定性,需要加入强制等待,等待1s
- 滑动距离尽量大点,比如x轴起点终点可以设置系数分别为0.9, 0.1,如果你设置为0.9,0.5,很可能会出现滑动距离太小,导致没有滑过去的情况
- uiautomator2还提供了一个扩展的滑动功能,swipe_ext(),不需要坐标,只需提供方向如"left",“right”,“up”,“down”。经过试验,感觉不太稳定,因此还是采用常规的方法
6、滑动到最后一页,点击立即体验,可以进入首页
这里可以使用resourceId或description或xpath,这里演示一下description的使用。
在uiautomator2中description定位的语法是:
d(description="元素定位表达式")
description也称为"content-desc",一般情况下它是唯一的
7、在首页,可以看到左上角有关注、推荐、话题、直播四个栏目,我们选择推荐作为断言的元素
看到推荐有文本值,那uiautomator2支持文本作为元素定位方式吗?
可以的
d(text="元素定位表达式")
然后可以使用get_text()方法拿到文本值,使用assert进行断言
8、一个用例运行完之后,需要停止app并清理环境,这里使用app_stop()和app_clear()方法
d.app_stop('指定的包名')d.app_clear('指定的包名')
这时我们一个完整的用例就写完了,当然为了演示起见,我省略了很多,比如PO模式、pytest、日志、报告等等
四、uiautomator2和appium运行速度比较
这里我更改了下代码,使用uiautomator2和appium同时去执行百度贴吧搜索的用例,步骤一致,等待时长设置一致,看看相同的情况下哪个自动化工具更快点
事实证明,相同情况下,uiautomator2耗时1分钟左右,而appium耗时1分钟16s,比uiautomator2慢了约16s。当然用例越多、流程越长,效果越明显
最后将uiautomator2的主要语法总结下,更多功能请阅读官方文档:http://8rr.co/Ngbk
现在就有这么一个机会,我邀请你点击进入我们的软件测试学习摸鱼群 ,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有学习文档资源,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。
送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!
十分钟弄懂最快的APP自动化工具uiautomator2(入门到精通)相关推荐
- 十分钟弄懂最快的APP自动化工具uiautomator2
相信很多使用appium做过APP自动化的人都深有感触: appium运行慢.时间长 uiautomatorviewer定位元素时得关掉appium server 在低版本的appium上获取toas ...
- 十分钟弄懂什么是跳表,不懂可以来打我
引言 今天我们来学习一种可以快速查找.插入.删除的数据结构,据说可以代替红黑树.就是本文的标题--跳表(SkipList).跳表还有一个优点是实现起来简单. redis中的有序集合,其实就是基于跳表实 ...
- invoke,十分钟搞定强大的Python任务自动化工具
学过Python都知道或者听过Fabric,它是Python的三大神器之一:自动化发布工具.而invoke就是Fabric最核心的基础组件.也是我们今天要介绍的主角,作为一个命令行工具,invoke专 ...
- 职称计算机证是继续教育的内容吗,豆腐网教你一分钟弄懂继续教育学时认定表及上传注意事项~...
原标题:豆腐网教你一分钟弄懂继续教育学时认定表及上传注意事项~ 大家好,我是豆腐网王老师,专注于南京工程师职称评审政策解读,关注我,让您轻松面对职称评审,少走弯路!!! 南京中高级职称申报已有段时间, ...
- 5分钟弄懂语音识别技术原理
5分钟弄懂语音识别技术原理 首先,我们知道声音实际上是一种波.常见的mp3.wmv等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如Windows PCM文件,也就是俗称的wav文件.wav文 ...
- html网页和cgi程序编程,十分钟搞懂什么是CGI
原文:CGI Made Really Easy,在翻译的过程中,我增加了一些我在学习过程中找到的更合适的资料,和自己的一些理解.不能算是严格的翻译文章,应该算是我的看这篇文章的过程的随笔吧. CGI真 ...
- python数据分析建模-十分钟搞懂“Python数据分析”
原标题:十分钟搞懂"Python数据分析" 引言:本文重点是用十分钟的时间帮读者建立Python数据分析的逻辑框架.其次,讲解"如何通过Python 函数或代码和统计学知 ...
- 十分钟看懂图像语义分割技术
转载于:十分钟看懂图像语义分割技术 大多数人接触"语义"都是在和文字相关的领域,或语音识别,期望机器能够识别你发出去的消息或简短的语音,然后给予你适当的反馈和回复.嗯,看到这里你应 ...
- 苹果发展到计算机,从天堂到地狱 十分钟看懂AIO兴衰存亡
一体电脑真正被大众所熟知的时间虽然并不长,但短短几年之间,一体电脑行业却经历了从快速发展,到鼎盛,再到衰落的全过程.OEM厂商曾经看好这片土地,也为此付出了诸多努力,但对于消费者而言,一体电脑倒在了性 ...
- APP自动化测试工具uiautomator2,十分钟迅速掌握
目录 前言 一.介绍 二.环境部署 三.编写百度贴吧首页脚本 四.uiautomator2和appium运行速度比较 写在最后,给与的建议: 前言 相信很多使用appium做过APP自动化的人都深有感 ...
最新文章
- Linus Torvalds: 成功的项目源于99%的汗水与1%的创新
- Eclipse启动出现“Failed to create the Java Virtual Machine”错误
- wxWidgets:创建一个 Frame
- 一些用过的优秀软件摘录
- 网络设置巨形帧_网络工程师笔记:VLAN技术
- Codeforces Global Round 12 E. Capitalism 差分约束
- 2021年美食类短视频及直播营销趋势洞察
- linux chmod命令参数及用法详解--文件文件夹权限设定命令
- 鼠标指向变成英文导航(CSS)_网页代码站(www.webdm.cn)
- 每日一题 2020.05.26
- ansys里面自带chemkin_ANSYS CHEMKINPRO复杂化学反应快速仿真
- 一个正则替换:一段文本中有若干a img标记,替换文本中的某些词,不包含除了a img标记 中的文字、属性...
- 排名算法(三)--排序学习
- scratch python_自动生成scratch2或scratch3作品核心代码
- python程序员专用壁纸_Python程序员必用的电脑桌面
- 一纵一横,搭建完整数据分析体系
- 泰坦尼克号电影 完整字幕 中英文对比 完整版
- kobo glo原系统设置
- 余承东 鸿蒙不是手机,余承东解密华为鸿蒙OS2.0:不是手机操作系统的简单替代-社会-文章-小虾米...
- 万年历农历法定节假日数据查询工具
热门文章
- 长沙云长计算机,【长沙记忆】原来关羽和长沙有这么多不解之缘
- PRBTEK分享-关于示波器探头的11个错误认识
- arcgis地理空间数据库学习记录02-地理数据库迁移
- win7美化_为Windows笔记本外接显示器!附实用工具/桌面美化折腾指南
- 数据库同步——中间数据库的实现方式
- 【已解决】Instances currently registered with Eureka中Application为UNKNOWN
- 傅里叶思想漫谈:从希尔伯特空间到不确定性原理
- python迅雷远程下载页面_迅雷远程下载
- 以后不该吃的不能吃了。。。
- 【金融系列】使用Python分析债券,画零息利率曲线,对债券进行精确定价,计算债券的麦考利久期、修正久期和凸度,并进行价格敏感性分析