首次接触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是什么?adb是android 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')
====================结束====================================