使用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实现的一个自动售饮料程序代码分享
Aug 25 Python
Python加pyGame实现的简单拼图游戏实例
May 15 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
python socket多线程通讯实例分析(聊天室)
Apr 06 Python
python实现redis三种cas事务操作
Dec 19 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
解决sublime+python3无法输出中文的问题
Dec 12 Python
python 与服务器的共享文件夹交互方法
Dec 27 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
python socket 聊天室实例代码详解
Nov 14 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP 文件上传限制问题
2019/09/01 PHP
使用onbeforeunload属性后的副作用
2007/03/08 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
js离开或刷新页面检测(且兼容FF,IE,Chrome)
2014/03/05 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
jquery 表单验证之通过 class验证表单不为空
2015/11/02 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
JS监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法
2016/08/05 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
AngularJs每天学习之总体介绍
2017/08/07 Javascript
详解React 在服务端渲染的实现
2017/11/16 Javascript
webpack构建的详细流程探底
2018/01/08 Javascript
Vue 使用 Mint UI 实现左滑删除效果CellSwipe
2018/04/27 Javascript
vue下拉菜单组件(含搜索)的实现代码
2018/11/25 Javascript
用element的upload组件实现多图片上传和压缩的示例代码
2019/02/12 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
如何利用nodejs实现命令行游戏
2020/11/24 NodeJs
Python备份Mysql脚本
2008/08/11 Python
Python批量修改文件后缀的方法
2014/01/26 Python
Python3实现取图片中特定的像素替换指定的颜色示例
2019/01/24 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
python实现人机猜拳小游戏
2020/02/03 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
绩效考核实施方案
2014/03/18 职场文书
程序员求职信
2014/04/16 职场文书
初中英语课后反思
2014/04/25 职场文书
职员竞岗演讲稿
2014/05/14 职场文书
户籍证明书标准模板
2014/09/10 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
导游词之西安骊山
2019/12/03 职场文书