上次写了一个Android自动化脚本,使用了appium和python-appium,刚开始使用时感觉很厉害,手机连上数据线之后,编写一系列代码就可以使Android自动操作,但是需要安装appium客户端(当时400多M),还需要手机用数据线连接计算机,后来无意间在网上发现了uiautomator2,和weditor,可以让手机脱离数据线,用局域网连接电脑,而且不需要额外安装软件,非常方便。
1、安装uiautomator2:pip install --pre uiautomator2
依赖(pillow):pip install pillow
2、初始化:(第一次需要)手机通过数据线连入电脑,abd可以识别到设备(adb可免费下载,下载后配置环境变量,在cmd中输入adb devices,使adb可以识别到手机),执行如下命令:
python -m uiautomator2 init
过程中会在手机安装程序:uiautomator-server 、atx-agent、openstf/minicap、openstf/minitouch
保持手机与电脑在同一wifi下,查看手机ip地址。
3、连接
import uiautomator2 as u2
d = u2.connect('192.168.8.100')
print(d.info)
此时,会输出连接信息。证明手机连接成功。
4、定位
使用python库weditor进行定位,weditor是运行在浏览器的一个服务,通过对页面节点的选择,可定位到相应的元素。使用之前需要pip安装:
pip install --pre --upgrade weditor
使用:python -m weditor
此时weditor会在浏览器中开启,在页面左上角选择Android,输入设备IP(192.168.8.100),点击Connect按钮。
weditor大体可分为三块,最左边是此时手机的屏幕,可通过鼠标点击进行定位,其中Home,back,menu键分别对应手机的主页,返回,菜单键,最下边的框是操作过程中的响应;
最右边是手机页面的源代码,中间是定位到的元素的信息,其中定位的元素可以tap(点击),可以填写(send keys),操作后,程序会将操作的python代码直接生成,显示在中间的最下边。还有一个reload按钮,进行对手机页面的刷新。
代码写好之后,weditor就可关闭,直接运行即可,不需依赖weditor。
d = u2.connect(ip)
d.app_start('com.android.contacts')# 打开手机通讯录
d.swipe(690, 720, 100, 720) #向左滑动
d(resourceId="com.android.contacts:id/option_edit_contact").click() # 点击右上角三个点
d(resourceId="com.android.contacts:id/title").click() #导入联系人
d.app_start('com.tencent.mm') # 开启微信
操作很简单,功能超级强!