• 安卓自动化测试Momkey 自定义脚本实现自动化


    环境说明:win10 Android SDK(adb) JDK 1.8

    MonkeyScript

    MS 是官方提供的,除了像猴子一样随机乱点之外,还可以通过编写脚本的形式,完成一系列固定的操作。MS 提供一整套完善的 API 来进行支持,主要还是基于坐标点的操作,包含常用的:点击、长按、输入、等待等操作。

    脚本用法

    1、LaunchActivity(pkg_name, cl_name):启动应用的Activity。参数:包名和启动的Activity。
    2、Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。
    3、UserWait(sleepTime): 休眠一段时间
    4、DispatchPress(keyName): 按键。参数: keycode。

    5、RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。
    6、DispatchString(input): 输入字符串。
    7、DispatchFlip(true/false): 打开或者关闭软键盘。
    8、PressAndHold(x, y, pressDuration): 模拟长按事件。
    9、Drag(xStart, yStart, xEnd, yEnd, stepCount): 用于模拟一个拖拽操作。
    10、PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。
    LongPress(): 长按2秒。
    11、DeviceWakeUp(): 唤醒屏幕。
    12、PowerLog(power_log_type, test_case_status): 模拟电池电量信息。
    13、WriteLog(): 将电池信息写入sd卡。
    14、RunCmd(cmd): 运行shell命令。
    15、DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFlags): 向指定位置,发送单个手势。
    16、DispatchPointer(downtime,eventTime,action,x,yxpressure,size,metastate,xPrecision,yPrecision,device,edgeFilags): 发送按键消息。
    17、LaunchInstrumentation(test_name,runner_name): 运行一个instrumentation测试用例。
    18、DispatchTrackball: 模拟发送轨迹球事件。
    19、ProfileWait: 等待5秒。
    20、StartCaptureFramerate(): 获取帧率。
    21、EndCaptureFramerate(input): 结束获取帧率。

    脚本规格

    #头部信息
    type = raw events
    count =1
    speed = 1.0
    

     

    #启动测试
    start data >>
    

     

    具体例子:

    #头部信息
    type = raw events
    count =1
    speed = 1.0
    
    #启动测试
    start data >>
    
    LaunchActivity(com.tt.test, com.com.tt.test.MainActivity)
    
    #点击登录
    Tap(116,330,3000)
    UserWait(2000)
    
    #选择密码登录
    Tap(140,543, 3000)
    UserWait(2000)
    
    #点击账号输入框
    Tap(226,543,2000)
    UserWait(2000)
    
    #输入账号
    DispatchString(966104405)
    UserWait(2000)
    
    #点击密码输入框
    UserWait(2000)
    
    Tap(221,730, 2000)
    #输入密码
    UserWait(2000)
    DispatchString(123456)
    UserWait(2000)
    #点击登录
    Tap(140,961,2000)
    

      

    用例执行:

    把用例传到手机上,然后用adb命令执行:

    adb push D:\mon.mks  /sdcard
    
    adb shell monkey -f /sdcard/mon.mks -v 1
    
    #1代表执行次数,可以参考monkey的命令
    #脚本执行也时基于Monkey命令,两者结合使用
    

      

    Monkey 介绍

    Monkey测试时Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕,滑动Trackall、按键等操作来对设备上的程序进行压力测试,检查程序多久的时间会发生异常。

    Monkey 用法

    基本语法:

    $ adb shell monkey [packageName] [options]
    
    #实例
    $ adb shell monkey -p com.tencent.test --pct-touch 30 -v 500
    

    可选参数如下:

    九个事件

    --pct-touch <percent> 0

    调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一位置)(——点击事件,涉及down、up)

    --pct-motion <percent> 1

    调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事件和一个up事件组成) (——注:move事件,涉及down、up、move三个事件)

    --pct-trackball <percent> 2

    调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)--(轨迹球)

    --pct-nav <percent> 3

    调整“基本”导航事件的百分比(导航事件由来自方向输入设备的up/down/left/right组成)

    --pct-majornav <percent> 4

    调整“主要”导航事件的百分比(这些导航事件通常引发图形界面中的动作,如:5-way键盘的中间按键、回退按键、菜单按键)

    --pct-syskeys <percent> 5

    调整“系统”按键事件的百分比(这些按键通常被保留,由系统使用,如Home、Back、Start Call、End Call及音量控制键)

    --pct-appswitch <percent> 6

    调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调用,作为最大程度覆盖包中全部Activity的一种方法。(从一个Activity跳转到另一个Activity)

    --pct-flip <percent> 7

    调整“键盘翻转”事件的百分比。

    --pct-anyevent <percent> 8

    调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。

    红色的数字对应下面百分比对应的数字。比如下图中0:15.0%,表示分配--pct-touch事件15%。测试100次分配15次测试down-up。

    百分比控制

    如果在monkey参数中不指定上述参数,这些动作都是随机分配的,9个动作其每个动作分配的百分比之和为100%,我们可以通过添加命令选项来控制每个事件的百分比,进而可以将操作限制在一定的范围内。

    参考文章:

    https://blog.csdn.net/sinat_41688684/article/details/82868809?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-9.control&dist_request_id=630237c5-0350-4a53-a718-1be732f26049&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-9.control

    https://blog.csdn.net/huangwei858/article/details/47660581

  • 相关阅读:
    Linux添加硬盘并分区格式化
    Struts2/XWork 安全漏洞及解决办法
    Java中ArrayList和 LinkedList区别
    java位操作
    Spring Cloud Config 分布式配置中心【Finchley 版】
    实现win2003下mysql数据库每天自动备份
    模仿IE自动完成功能,非常完美(转)
    高级自定义查询、分页、多表联合存储过程(转)
    文本框位置
    英文论坛常用
  • 原文地址:https://www.cnblogs.com/shoebill/p/14437459.html
Copyright © 2020-2023  润新知