Python实现自动化操作Android手机
参考; https://www.cnblogs.com/xakzp/articles/9662770.html
注:
1,一定要要使用Python 2.7才能通过AndroidViewClient控制手机,因为AndroidViewClient不兼容Python3;
2,uiautomatorviewer.bat 打开时,如果报错:Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException
参考解决:https://blog.csdn.net/dengachao/article/details/100535536
1)截取uix文件
adb shell uiautomator dump /sdcard/sc.uix
adb pull /sdcard/sc.uix
注明:新手机地址改成:/data/local/tmp/**.uix
2)截取截图
adb shell screencap -p /sdcard/sc.png
adb pull /sdcard/sc.png
注意:为了方便获取位置信息进行调试,建议将上面4条指令整合到bat文件中,然后将bat文件拉到cmd里面进行执行即可;
3,打开sdk tools目录下的uiautomatorviewer.bat,导入从机器获取的截图和资源文件,可以定位元素;
4,cmd启动高级调试工具:C:\Python27\python C:\Python27\Scripts\culebra -G --scale 0.3
操作弹出的虚拟手机界面,会打印出对应的定位操作代码,可以参考;
5,控制过程注意事项:
前提:
# 连接手机
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device, serialno)
a)页面变化后,要使用 vc.dump() 进行刷新再操作;
b)需要模拟点击应用某些地方时,需要通过 vc.findView***().touch() 函数进行点击操作
c)要模拟系统级别的操作,需要使用 device.press(传入安卓的keycode) ,比如返回页面:‘KEYCODE_HOME’
可参考:
https://www.cnblogs.com/bluestorm/p/4886662.html
d)要善用 View 里面的 map 函数,可以获取出相应的信息,可通过pycharm中的Debug功能查看map的信息,会太有帮助:
eg:
tmp = vc.findViewByIdOrRaise("android:id/button2")
if tmp.map['text'] == "一律不保存":
tmp.touch()
vc.dump()
如:当map[‘bounds’] != ((0, 0), (0, 0)) 时表时,在手机上可见;否则不可见
本文地址:https://blog.csdn.net/seagulhui1/article/details/107439907
上一篇: 博客系统如何随机插入大量文章数据