使用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实现删除文件与目录的方法
Nov 10 Python
使用优化器来提升Python程序的执行效率的教程
Apr 02 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
Python如何判断数独是否合法
Sep 08 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
python实现比较文件内容异同
Jun 22 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
python os模块简单应用示例
May 23 Python
详解pyppeteer(python版puppeteer)基本使用
Jun 12 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Jupyter 无法下载文件夹如何实现曲线救国
Apr 22 Python
Django 5种类型Session使用方法解析
Apr 29 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 第二节 数据类型之字符串类型
2012/04/28 PHP
一个完整的php文件上传类实例讲解
2015/10/27 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
2016/11/16 PHP
ext实现完整的登录代码
2008/08/08 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
Jquery使用Firefox FireBug插件调试Ajax步骤讲解
2013/12/02 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
JavaScript中的this引用(推荐)
2016/08/05 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
react-router browserHistory刷新页面404问题解决方法
2017/12/29 Javascript
bootstrap fileinput插件实现预览上传照片功能
2018/01/23 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
python笔记(2)
2012/10/24 Python
对Pandas DataFrame缺失值的查找与填充示例讲解
2018/11/06 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
Python批量安装卸载1000个apk的方法
2020/04/10 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
失业者真诚求职信范文
2013/12/25 职场文书
面试感谢信范文
2015/01/22 职场文书
大学四年个人总结
2015/03/03 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
重阳节简报
2015/07/20 职场文书
html中显示特殊符号(附带特殊字符对应表)
2021/06/21 HTML / CSS
聊聊redis-dump工具安装问题
2022/01/18 Redis