今天尝试用monkeyrunner脚本在夜神模拟器上安装并截图QQ,但是遇到了一些问题:
1 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage 2 3 4 #连接模拟器 5 device = MonkeyRunner.waitForConnection() 6 7 #打开锁屏 8 device.drag((355,1061),(621,1061),3,1) 9 10 #安装QQ 11 device.installPackage("F:\\QQ_730.apk") 12 MonkeyRunner.sleep(8) 13 14 #启动QQ 15 device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity") 16 MonkeyRunner.sleep(5) 17 18 #点击登录 19 device.touch(180,1170,"DOWN_AND_UP") 20 MonkeyRunner.sleep(3) 21 22 #保存截图 23 result = device.takeSnapshot() 24 result.writeToFile("qq.png","png")
无奈刚开始就报错了。
"SyntaxError: Non-ASCII character in file ‘C:\Users\Administrator\qq.py‘
这是一个语法错误,原因可能是我们脚本的注释用的是中文。我们可以在脚本开始加上#-*-coding:utf-8-*-
1 #-*-coding:utf-8-*- 2 3 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage 4 5 6 #连接模拟器 7 device = MonkeyRunner.waitForConnection() 8 9 #打开锁屏 10 device.drag((355,1061),(621,1061),3,1) 11 12 #安装QQ 13 device.installPackage("F:\\QQ_730.apk") 14 MonkeyRunner.sleep(8) 15 16 #启动QQ 17 device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity") 18 MonkeyRunner.sleep(5) 19 20 #点击登录 21 device.touch(180,1170,"DOWN_AND_UP") 22 MonkeyRunner.sleep(3) 23 24 #保存截图 25 result = device.takeSnapshot() 26 result.writeToFile("qq.png","png")
可是,又报错了:
再次尝试:
1 import sys 2 reload(sys) 3 sys.setdefaultencoding("utf-8") 4 5 from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage 6 7 8 #连接模拟器 9 device = MonkeyRunner.waitForConnection() 10 11 #打开锁屏 12 device.drag((355,1061),(621,1061),3,1) 13 14 #安装QQ 15 device.installPackage("F:\\QQ_730.apk") 16 MonkeyRunner.sleep(8) 17 18 #启动QQ 19 device.startActivity(component="com.tencent.mobileqq/.activity.LoginActivity") 20 MonkeyRunner.sleep(5) 21 22 #点击登录 23 device.touch(180,1170,"DOWN_AND_UP") 24 MonkeyRunner.sleep(3) 25 26 #保存图片 27 result = device.takeSnapshot() 28 result.writeToFile("qq.png","png")
值得注意的两点是:
1. 检查夜神模拟器有没有连上:adb devices
如果没有连上,用adb connect 127.0.0.1:62001连接,再用adb devices检查。(详见lynnLi的博客monkeyrunner之夜神模拟器的安装与使用(二))
2. 一定要用好MonkeyRunner.sleep()
在实际的测试过程中,有的时候发现脚本业务逻辑是正确的,可是不知道为什么一旦执行起来结果却是错误的,那么有一种可能就是你的操作过快,导致界面元素没有完全展示出来就开始了后续操作,从而引起的问题。(引自《精通移动App测试实战:技术、工具和案例》,于涌 王磊 曹向志编著)
时间: 2024-11-03 22:54:14