使用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中表达式i += x与i = i + x是否等价
Feb 08 Python
用TensorFlow实现lasso回归和岭回归算法的示例
May 02 Python
python使用thrift教程的方法示例
Mar 21 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
解决Python pip 自动更新升级失败的问题
Feb 21 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
python实现ftp文件传输系统(案例分析)
Mar 20 Python
tensorflow 大于某个值为1,小于为0的实例
Jun 30 Python
python rsa-oaep加密的示例代码
Sep 23 Python
python 日志模块logging的使用场景及示例
Jan 04 Python
Python实现byte转integer
Jun 03 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
用PHP创建PDF中文文档
2006/10/09 PHP
PHP获取当前URL路径的处理方法(适用于多条件筛选列表)
2017/02/10 PHP
JavaScript 高级篇之闭包、模拟类,继承(五)
2012/04/07 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
jQuery实现带渐显效果的人物多级关系图代码
2015/10/16 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
2016/01/26 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
Python、Javascript中的闭包比较
2015/02/04 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
Window 64位下python3.6.2环境搭建图文教程
2018/09/19 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
英文导游欢迎词
2014/01/11 职场文书
婚礼秀策划方案
2014/05/19 职场文书
租房协议书范文
2014/08/20 职场文书
关于感恩的演讲稿500字
2014/08/26 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
党员查摆四风问题思想汇报
2014/10/25 职场文书
圣诞晚会主持词
2015/07/01 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
uni-app 微信小程序授权登录的实现步骤
2022/02/18 Javascript
gtx1650怎么样 gtx1650显卡相当于什么级别
2022/04/08 数码科技