使用python+poco+夜神模拟器进行自动化测试实例


Posted in Python onApril 23, 2020

网易最近出的一款自动化UI测试工具:Airtest 挺火的,还受到谷歌的推荐。我试着用了一下,感觉优缺点还是蛮明显的。对初学者来说,能用到的也就是图像识别的功能,这块做得比老牌的按键精灵弱很多。不过Airtest集合了poco框架对熟悉python的同学来说,是个进行自动化测试的利器。

我用了一段时间Airtest以后,发现其实我完全可以丢开Airtest,我需要的是poco框架提供的unity3d控件读取,Airtest在其中只起到了一个pythonIDE的作用。自动化跑py脚本时,还要打开Airtest并通过Airtest连接模拟器很烦,于是稍微研究了一下,搭建了一个python+poco+夜神模拟器的测试环境。

第1步,需要有一个自己的python环境。网上教程很多,不赘述。

第2步,在自己的python里引入poco。Airtest自带poco框架,所以不使用Airtest的话,poco需要手动导入。

安装poco很简单,在cmd里输入 pip install pocoui 即可。pip会自动下载poco并安装到你的python环境里。

使用python+poco+夜神模拟器进行自动化测试实例

第3步,添加夜神的adb环境变量。由于需要在命令行调用夜神,所以将夜神的adb.exe添加到系统环境变量里是必须的。夜神的默认路径是C:\Program Files\Nox\bin,添加即可。这样可以直接通过os调用nox_adb.exe。

使用python+poco+夜神模拟器进行自动化测试实例

第4步 修改python脚本。

要通过python调用夜神打开待测游戏,首先需要取得该游戏的入口类名。一般入口类名会以Activity结尾。先用夜神把待测游戏打开,然后用

adb shell dumpsys activity | findstr “Unity” 命令,

可以查到当前所有的类名。一般第一行的cmp参数就是游戏的入口。

使用python+poco+夜神模拟器进行自动化测试实例

然后在python里使用 os.system(“nox_adb -s 127.0.0.1:62001 shell am start -n 包名/类名”)方法就可以直接通过夜神模拟器来打开游戏了。PS:62001是夜神的默认端口,使用其他的模拟器则更换对应的端口即可。

原本使用Airtest的默认脚本是这样的。

使用python+poco+夜神模拟器进行自动化测试实例

初始化UnityPoco以后直接声明poco实例就可以使用。

修改以后的脚本增加os命令调用模拟器开启游戏:

使用python+poco+夜神模拟器进行自动化测试实例

这样,poco就可以正常取到adb连接,与之前通过Airtest工具进行连接没有区别。

使用python+poco+夜神模拟器进行自动化测试实例

调试环境的时候还碰到过一个坑,python的adb.exe版本与夜神的adb.exe版本不一致,需要手动用高版本覆盖低版本,夜神的nox_adb.exe其实就是adb.exe,手动改一下名字就行。

再写个批处理文件,自动拷贝每天编译好的版本,然后丢到夜神里安装,再直接执行这个py文件,就可以做到自动化测试了。

执行的时候发现单独执行py脚本,与通过Airtest执行py脚本,效率略有降低,在执行前会有几秒的卡顿,我估计是由于还调用了 airtest库的原因,需要先在本地解释。

使用python+poco+夜神模拟器进行自动化测试实例

使用Airtest写的脚本里,像snapshot和sleep都是Airtest提供的封装好的命令,如果嫌效率低,就不要用这2个命令,换用python原生的命令即可。

以上这篇使用python+poco+夜神模拟器进行自动化测试实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python版本坑:md5例子(python2与python3中md5区别)
Jun 20 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
关于python之字典的嵌套,递归调用方法
Jan 21 Python
python打开windows应用程序的实例
Jun 28 Python
python中 * 的用法详解
Jul 10 Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 Python
Python 如何优雅的将数字转化为时间格式的方法
Sep 26 Python
tensorflow 环境变量设置方式
Feb 06 Python
浅谈pycharm导入pandas包遇到的问题及解决
Jun 01 Python
Python循环之while无限迭代
Apr 30 Python
python热力图实现的完整实例
Jun 25 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 #Python
python+adb命令实现自动刷视频脚本案例
Apr 23 #Python
python+adb+monkey实现Rom稳定性测试详解
Apr 23 #Python
通过python调用adb命令对App进行性能测试方式
Apr 23 #Python
python 将视频 通过视频帧转换成时间实例
Apr 23 #Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 #Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
Apr 23 #Python
You might like
德生S2000收音机更换“钕铁硼”全频扬声器
2021/03/02 无线电
PHP array_multisort()函数的使用札记
2011/07/03 PHP
php的RSA加密解密算法原理与用法分析
2020/01/23 PHP
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
2016/02/19 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
canvas实现绘制吃豆鱼效果
2017/01/12 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
[01:01:52]完美世界DOTA2联赛PWL S2 GXR vs Magma 第二场 11.25
2020/11/26 DOTA
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
关于Django ForeignKey 反向查询中filter和_set的效率对比详解
2018/12/15 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
校园新闻广播稿
2014/01/10 职场文书
咖啡馆创业计划书
2014/01/26 职场文书
教育科研先进个人材料
2014/01/26 职场文书
机关门卫的岗位职责
2014/04/29 职场文书
服务标语口号
2014/07/01 职场文书
行政答辩状范文
2015/05/21 职场文书
被委托人身份证明
2015/08/07 职场文书
筑梦中国心得体会
2016/01/18 职场文书
《领导干部从政道德启示录》学习心得体会
2016/01/20 职场文书
分享7个 Python 实战项目练习
2022/03/03 Python
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript