使用python+poco+夜神模拟器进行自动化测试实例

作者:saint_228 时间:2022-12-19 09:09:29 

网易最近出的一款自动化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原生的命令即可。

来源:https://blog.csdn.net/saint_228/article/details/84889017

标签:python,poco,夜神,自动化
0
投稿

猜你喜欢

  • python基于windows平台锁定键盘输入的方法

    2021-01-03 07:46:03
  • python使用信号量动态更新配置文件的操作

    2023-02-25 08:43:18
  • 1亿条数据在PHP中实现Mysql数据库分表100张

    2011-06-02 09:31:00
  • python+requests接口压力测试500次,查看响应时间的实例

    2021-09-29 08:27:56
  • Vue 使用 Mint UI 实现左滑删除效果CellSwipe

    2024-05-10 14:16:45
  • Python数据分析之双色球基于线性回归算法预测下期中奖结果示例

    2021-12-04 12:39:55
  • 如何在vue中使用ant-design-vue组件

    2024-05-02 16:32:47
  • 关于python pygame游戏进行声音添加的技巧

    2023-06-25 16:12:30
  • python Copula 实现绘制散点模型

    2023-07-24 14:02:37
  • 品牌的统一体验

    2010-05-19 13:08:00
  • SqlServer数据库远程连接案例教程

    2024-01-21 10:16:08
  • Python设计模式之外观模式实例详解

    2022-01-18 16:39:37
  • 详解golang 模板(template)的常用基本语法

    2024-04-23 09:45:48
  • Fuse.js模糊查询算法学习指南

    2024-04-19 11:02:54
  • numpy.insert用法及内插插0的方法

    2023-03-28 10:06:13
  • HTML和CSS中的视觉语义

    2010-07-09 13:08:00
  • 安装SQL Server 2005时出现计数器错误

    2008-11-28 14:19:00
  • 用JS找出字符串中出现次数最多的字母

    2007-11-12 13:40:00
  • python数据分析基础知识之shape()函数的使用教程

    2023-06-11 04:03:56
  • Python图像处理库PIL的ImageDraw模块介绍详解

    2022-06-29 04:18:20
  • asp之家 网络编程 m.aspxhome.com