• Monkeyrunner的使用实例练习


    首次接触monkeyrunner,做了一个小练习,记录下来为了方便自己以后的复习,有需要的朋友也可以参考一下。文章中有些地方可能理解的不对,请谅解。

    实例练习题:

    一、使用monkeyrunner完成如下操作:

    1.安装worktile App

    2.启动worktile并截屏

    3.在启动页进行5个动画页的滑动切换,每次都需要截屏

    4.点击登录按钮,进入登录页面

    5.卸载worktile

    前提准备:

    1.Android模拟器

    2.Android SDK已经在环境变量中配置好

    3.从应用宝(专门下载apk的网站)下载worktile

    ========================正式开始============================

    1.启动android模拟器,一定要先启动模拟器,才能进行下面的操作

    2.先确认adb的端口号是否被其他程序的进程占用

    --------adb是什么?adbandroid sdk中的一个工具,该工具可以直接操作管理andriod模拟器或真实的android设备                        

     1) 运行cmd,输入命令adb devices

     2) 如果显示adb server is out of date.killing,表示adb端口已经被其他程序的进程占领了,此时输入 adb nodaemon server ,查看adb端口号,一般情况下为5037

         再输入netstat -ano|findstr “5037”,可以看到占据端口号5037的进程,注意本地占据端口的pid,在任务管理器中kill

    具体操作链接地址:http://jingyan.baidu.com/article/d621e8da0dee022865913fce.html

     3) 如果显示如下图,则正确

     

    4)我是一直没有显示连接的设备,即192.168.56.101:5555   device 这行,最后关机重启,万能法宝

    3.两种方式创建Python代码

     1)在sdk tools中自带monkeyrunner.bat 点击运行,就可以输入一行一行的代码

     2)将代码写在记事本中,文件扩展名改为.py,就变成.py文件啦

    然后运行cmd,输入monkeyrunner  后面把文件直接拖入进来,如下图

     

    4.具体代码

    //导入一些需要的包

    from com.android.monkeyrunner import MonkeyRunner

    from com.android.monkeyrunner import MonkeyDevice 

    from com.android.monkeyrunner.easy import EasyMonkeyDevice

    from com.android.monkeyrunner.easy import By

    //连接模拟器,如果一直连接没反应,可能是端口被占领,返回第二步确认

    device=MonkeyRunner.waitForConnection() 

    //安装之前下载worktile,括号里是apk的地址

    device.installPackage('F:/com.worktile_Worktile3.4.3_17.apk')

    //启动worktile app,括号里是  app包名/activity,获得方式见下面图1

    device.startActivity("com.worktile/com.worktile.ui.external.WelcomeActivity")

    MonkeyRunner.sleep(1)

    //第一个起始页截图

    startPic=device.takeSnapshot()

    //写入 存为图片地址

    startPic.writeToFile('F:/startPic.jpg','jpg')

    //滚动页第一张截图

    pic1=device.takeSnapshot()

    pic1.writeToFile('F:/pic1.jpg','jpg')

    //滚动页第二张截图

    pic2=device.takeSnapshot()

    pic2.writeToFile('F:/pic2.jpg','jpg')

    //滚动页第三张截图

    pic3=device.takeSnapshot()

    pic3.writeToFile('F:/pic3.jpg','jpg')

    //滚动页第四张截图

    pic4=device.takeSnapshot()

    pic4.writeToFile('F:/pic4.jpg','jpg')

    //滚动页第五张截图

    pic5=device.takeSnapshot()

    pic5.writeToFile('F:/pic5.jpg','jpg')

    /*

    *点击登录按钮,跳至登录页面

    如何获得登录按钮的id

    *----双击android sdk tools里的hierarchyviewer.bat(hierarchy viewer 可以看到页面布局,

    *   获得控件属性,更好的检视和设计用户界面),如图1,加粗部分表示当前页,双击加

    *   粗部分,如图2,具体操作可百度

    */

     

                                 图1

     

                                图2

    easy_device=EasyMonkeyDevice(device)

    //获得登录按钮的id,按下去

    easy_device.touch(By.id('id/btn_login'),MonkeyDevice.DOWN_AND_UP)

    MonkeyRunner.sleep(5)

    //卸载app,括号里是app的包名,注意app的包名不是apk的名字哦

    device.removePackage('com.worktile')

    ====================结束====================================

  • 相关阅读:
    QT开发之旅一DS7400主机调试工具
    读《程序员,你伤不起》杂感(附带分享两个项目源码)
    这些年过上幸福生活的程序员(中篇)
    这些年过上幸福生活的程序员(上篇)
    如果第三方数据表与系统数据库里的表名格式不一致的解决方案
    数据库设计原则
    MYSQL密码设置
    关于phpmyadmin #1045无法登陆服务器的问题
    TP快捷函数
    跨控制器调用
  • 原文地址:https://www.cnblogs.com/wyfly/p/4576624.html
Copyright © 2020-2023  润新知