使用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 字符串操作方法大全
Mar 11 Python
分享Python开发中要注意的十个小贴士
Aug 30 Python
python使用super()出现错误解决办法
Aug 14 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
简单实现Python爬取网络图片
Apr 01 Python
python numpy数组的索引和切片的操作方法
Oct 20 Python
python基于C/S模式实现聊天室功能
Jan 09 Python
python函数的万能参数传参详解
Jul 26 Python
python 字符串常用方法汇总详解
Sep 16 Python
python序列化与数据持久化实例详解
Dec 20 Python
Flask框架搭建虚拟环境的步骤分析
Dec 21 Python
Python的logging模块基本用法
Dec 24 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中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
Laravel Memcached缓存驱动的配置与应用方法分析
2016/10/08 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
2019/06/22 PHP
用jquery实现下拉菜单效果的代码
2010/07/25 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
javascript常用函数(2)
2015/11/05 Javascript
React通过父组件传递类名给子组件的实现方法
2017/11/13 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
[01:14]英雄,所敬略同——2018完美盛典宣传视频4K
2018/12/05 DOTA
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python的Flask开发框架简单上手笔记
2015/11/16 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
《Python学习手册》学习总结
2018/01/17 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
40个你可能不知道的Python技巧附代码
2020/01/29 Python
Python Opencv 通过轨迹(跟踪)栏实现更改整张图像的背景颜色
2020/03/09 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
python两个list[]相加的实现方法
2020/09/23 Python
使用javascript和HTML5 Canvas画的四渐变色播放按钮效果
2014/04/10 HTML / CSS
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
你们项目是如何进行变更控制的
2015/08/26 面试题
聚美优品励志广告词
2014/03/14 职场文书
升学宴学生答谢词
2015/01/05 职场文书
销售助理岗位职责
2015/02/11 职场文书
通知函的格式
2015/04/27 职场文书
倡议书范文大全
2015/04/28 职场文书
党风廉政教育心得体会2016
2016/01/22 职场文书
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS