使用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中使用enumerate函数遍历元素实例
Jun 16 Python
Python最基本的输入输出详解
Apr 25 Python
Python类定义和类继承详解
May 08 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
Flask框架的学习指南之用户登录管理
Nov 20 Python
详谈Python2.6和Python3.0中对除法操作的异同
Apr 28 Python
python实现对excel进行数据剔除操作实例
Dec 07 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python链表类中获取元素实例方法
Feb 23 Python
Jupyter notebook 更改文件打开的默认路径操作
May 21 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+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
php算法实例分享
2015/07/14 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
DOM精简教程
2006/10/03 Javascript
cssQuery()的下载与使用方法
2007/01/12 Javascript
风吟的小型JavaScirpt库 (FY.JS).
2010/03/09 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
JS循环遍历JSON数据的方法
2014/07/08 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
js简单实现调整网页字体大小的方法
2016/07/23 Javascript
JavaScript组合模式学习要点
2016/08/26 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
微信网页授权并获取用户信息的方法
2018/07/30 Javascript
微信小程序 云开发模糊查询实现解析
2019/09/02 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
python 回调函数和回调方法的实现分析
2016/03/23 Python
python中字符串比较使用is、==和cmp()总结
2018/03/18 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
Python Numpy 实现交换两行和两列的方法
2019/06/26 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
宝拉珍选英国官网:Paula’s Choice英国
2019/05/29 全球购物
Java程序员面试90题
2013/10/19 面试题
大型公益活动策划方案
2014/08/20 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
员工辞职信怎么写
2015/02/27 职场文书
2015年教学管理工作总结
2015/05/20 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL