欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python实现自动化操作Android手机

程序员文章站 2022-04-10 09:38:35
参考; 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.InvocationTargetExceptio...

参考; 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