python写自动化测试脚本常见报错_Python Appium自动化测试 MonkeyScript

Time will tell.

前边讲解的 Monkey 都是随机事件流,Monkey 在手机里像个无头苍蝇一样乱蹦乱跳,那么本章节就教你如何让 Monkey 按指令在手机里闹腾 —— Monkey 自定义脚本。

1、monkey 隐藏命令

–pck-blacklist-file

–pck-whitelist-file

–f:可以指定monkey的自定义脚本

一般 Monkey 测试都是随机的测试事件,假如我们需要测试某一个特定的场景,普通的命令很难办到,这是就是需要自定义脚本这个命令了。

它的使用方式也是很简单方便的,只要我们按照 Monkey 的脚本规范写好脚本,之后将它保存到手机中,然后运行 Monkey 的时候使用-f命令指定脚本就行。

2、monkey 自定义脚本格式

虽然,Google 官方并没有提供对 MS 详细讲解的 API 文档,但是我们是可以通过源码来分析出 MS 支持的 API 的。

MS 的源码文件是:MonkeySourceScript.java

Monkey 的源码 MonkeySourceScript.java类中有一段关于 Monkey 脚本规则的描述MonkeySourceScript.java有兴趣的同学可以去看一下这个源码,这里以 5.1.1 为例子,进行讲解,其实这一块的代码变动非常的少,找一个版本了解即可。我们看一下源码对脚本规则描述。

脚本规则的描述

/**

* monkey event queue. It takes a script to produce events sample script format:

*

*

 
 

* type= raw events

* count= 10

* speed= 1.0

* start data >>

* captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)

* captureDispatchKey(5113146,5113146,0,20,0,0,0,0)

* captureDispatchFlip(true)

* ...

*

*/

解释意思

#声明脚本的类型

type= raw events

#脚本的执行次数,由于monkey运行次数在命令设置的,这里的设置是无效的

count= 10

#事件执行时间间隔,这个也是通过命令来设置,这里不起作用

speed= 1.0

#脚本的入口,说明脚本从下面开始执行

start data >>

#下全是monkey命令

captureDispatchPointer(5109520,5109520,0,230.75429,458.1814,0.20784314,0.06666667,0,0.0,0.0,65539,0)

captureDispatchKey(5113146,5113146,0,20,0,0,0,0)

captureDispatchFlip(true)

知道 Monkey 脚本书写的基本格式,在来看一眼 Monkey 常见脚本 API 。

1.LaunchActivity(包名,Activity名称)

启动被测应用的某个Activity

2.Tap(x,y,TapDuration)

一次单击事件

x,y:是坐标

TapDuration:持续的时间,单位毫秒

3.DispatchPress(keyName)

模拟一个按键

keyName:按键的名称

4.RotateScreen(RotationDegree,peresist)

旋转屏幕

RotationDegree:0~3分别表示顺时针的四个方向

peresist:是否存留

5.DispatchFiip(true/false)

打开或关闭软键盘

6.LongPress()长按2秒

7.PressAndHold(x,y,PressDuration)

模拟长按事件

x,y:点击的坐标

PressDuration:持续时常,单位毫秒

8.DispatchString(input)

输入字符串

input:输入的内容

9.Drag(xStart,yStart,xEnd,yEnd,pCount)

模拟拖动操作

xStart,yStart:开始的坐标值

xEnd,yEnd:结束的坐标值

pCount:滑动事件的次数

10.PinchZoom(pt1xStart,pt1yStart,pt1xEnd,pt1yEnd,pt2xStart,pt2ystart,pt2xEnd,pt2yEnd)

手势缩放事件

pt1xStart,pt1yStart:第一个手指起始的坐标位置

pt1xEnd,pt1yEnd:第一个手指结束的坐标位置

pt2xStart,pt2ystart:第二个手指开始的坐标位置

pt2xEnd,pt2yEnd:第二个手指结束的坐标位置

11.UserWait(sleepTime)

设置睡眠时间

sleepTime:等待时间,单位毫秒

12.DeviceWake()

唤醒设备屏幕

在源码中,所有我们上面介绍的 API 都是以一个static final的形式被声明。这里简单就LaunchActivity 的方法的源码进行讲解,其他的 API 其实也大同小异。

LaunchActivity的方法的源码讲解:

1、浏览器输入源码地址,找到静态字符串LaunchActivity,如图:

2、将鼠标定位到静态字符串LaunchActivity通过ctrl(command)+?️左键我们可以定位到方法的位置。大约在597行,如图:

3、将鼠标定位到LaunchActivity的方法通过ctrl(command)+?️左键我们可以进入到方法代码。大约在597行,如图:

4、如上边LaunchActiviity方法源码所示,LaunchActiviity会以数组的形式接收两个参数,分别表示 PackageName和Activity 的ClassName,下面具体对应的实现,我们就不细看了。再参照上面介绍的 API ,就可以很清晰的定位出方法和参数的含义了。

有兴趣的小伙伴们可以通过以上步骤一一查看那些方法的 API 。

3、Monkey 脚本的实例

1、Monkey 脚本主要包含两部分,一部分是头文件信息,一部分是具体的 Monkey 命令。

2、按照2.1的脚本描述规则我们来编辑monkeyscript,如下:

type = user

count = 1

speed = 500

start data >>

#启动应用程序

LaunchActivity(com.michael.words,com.michael.words.activity.SplashActivity)

UserWait(5000)

#点击下步按钮

Tap(615,609)

UserWait(1000)

#点击编辑框

Tap(200,85,1000)

#输入sg

DispatchString(sg)

注意这里分别使用了DispatchPress 和DispatchString来分别使用,就是为了做演示,实际你可以依赖场景选择使用的 API 。而其中涉及到坐标点的问题,这个在后面会讲解如何获取控件的坐标点。

3、执行脚本

编写好脚本,保存为monkey.script文件。

通过 adb push将其上传到待测试的设备中。要push到sdcard文件夹中(这里一夜神模拟器为例),如图:

adb push C:/Users/DELL/Desktop/monkey.script /sdcard/

查看有没有push到设备中,从下图可以看到成功的push进去了。如图:

有兴趣或者不相信的可以查看文件内容,如图:

然后通过 monkey -f执行此脚本,例如下面执行 1次。

adb shell monkey -f /sdcard/monkey.script -v 1

效果截图

image

执行完成之后,可以在控制台,看到输出的 Log 信息。

image

4、总结

1、通过adb pull和adb push手机与电脑之间传输文件

(1)将手机卡中的某个文件复制到电脑

手机连接电脑后,在命令行输入 adb devices,获取到设备序列号后说明手机已经和电脑连接成功。

输入: adb pull 手机存储路径 电脑路径    adb pull /sdcard/xxx /Users/xxxx/xxx.tx

(2)从电脑端向手机复制文件

输入: adb pull 电脑路径 手机存储路径    adb push /Users/xxxx/xxx.txt /sdcard/xxx

2、注意事项(此处有坑!)

头文件代码书写注意 “=” 两边预留空格,否则会出现如下报错。

java.lang.NumberFormatException: Invalid int: ""

以上就分享到这里,最近正好有时间做自动化测试方面的资料整理。如果你对Python自动化测试、面试题,感兴趣可以加入我们扣裙一起学习175317069,有各项测试资料,面试题资料。

欢迎【点赞】、【评论】、【关注】~

Time will tell.(时间会证明一切)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值