用uiautomator2实现微信发消息自动化

目录

  • 介绍
    • 配置环境
    • uiautomator2常用api
  • 操作步骤
    • adb连接手机
    • 启动uiautomator2,安装atx-agent
    • 启动weditor
  • 微信发消息demo

介绍

Android UI自动化测试框架,提供了屏幕模拟点击的方法如点击、长按、输入、滑动等;

uiautomator2uiautomator

uiautomator2 的底层是基于uiautomator,uiautomator可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作,但有两个缺点:

  • 只能使用Java语言;
  • 输出为jar包,需要上传到设备上运行。

2.0使用python语言,输出为APK,可以使用安卓服务和接口,开发和调试比1.0简单

配置环境

  1. 安装python:https://www.runoob.com/python/python-install.html
  2. adb:android debug bridge,安卓手机的调试工具
    安装参考: https://adbshell.com/downloads
  3. 安装uiautomator2:pip安装:pip3 install --pre -U uiautomator2
  4. weditor:比android sdk自带的UIAutomatorView工具更好用的元素定位工具,基于uiautomator2。
    安装命令:pip3 install --pre weditor

uiautomator2常用api

设备连接

  • d = u2.connect_usb(serial);
  • d = u2.connect(ip)

应用控制

  • 安装 d.app_install(‘apkurl’);
  • 打开 d.app_start(‘com.tencent.mm‘)等

元素控制

  • 单击坐标:d.click(x,y)
  • xpath单击:d.xpath().click()
  • resourceid单击:d(resourceid = “xxx”).click()
  • 双击:d.double_click()
  • 输入文本:d.send_keys(“ 122”, clear=True)

操作步骤

adb连接手机

两种连接方式:

  1. 使用usb:

     连接步骤:
     1. 手机打开开发者模式,允许usb调试(每种型号手机打开方式不一样,小米:连续点击版本号可以打开开发者模式,具体可以百度)
     2. usb连接电脑和手机
     3. 手机允许调试
     4. 执行adb devices命令查看连接设备
     5. 断开连接:断开usb
    
  2. 无线连接:

    连接步骤:
    1. 先用usb连接,保证手机和电脑在同一网段下
    2. 执行adb devices命令查看连接设备序列号
    3. 给设备指定一个端口号:adb –s [手机序列号] tcpip [端口号]
    4. 连接手机IP:adb connect [手机IP]:[端口号]
    5. 断开连接:adb disconnect [手机IP]:[端口号]
    

华为手机也可以无线连接:

	调整设备上开启usb调试的顺序:

用uiautomator2实现微信发消息自动化_第1张图片
序列号用uiautomator2实现微信发消息自动化_第2张图片

启动uiautomator2,安装atx-agent

Atx-agent:运行在手机后台的插件,获取ip地址,可通过手机版本号,调用不同的命令
启动命令:python3 -m uiautomator2 init
执行后手机上会提示下载atx-agent,点击下载(uiautomator2不稳定,需要atx-agent保活)
用uiautomator2实现微信发消息自动化_第3张图片

启动weditor

启动weditor命令:python3 -m weditor
用uiautomator2实现微信发消息自动化_第4张图片

启动后命令行窗口不要关,会在浏览器打开weditor窗口

  • 系统选择:ios暂不使用;
  • 输入ip或手机序列号,点击connect连接,出现绿色小树表示连接成功;
  • 点击dump hierarchy 刷新,同步手机页面,选择实时,可以自动同步手机页面状态;
  • 点击页面元素,可以生成xpath代码,也可以使用坐标或其他定位方式;
  • 下面分别是开关机,主页面,返回,点击如手机操作;
  • 在线调试代码,点击页面生成代码,加进逻辑后,可以在线执行,查看执行效果,进行修改,可以直接复制进idea里使用;
    用uiautomator2实现微信发消息自动化_第5张图片

微信发消息demo

python-demo:搜索群名后进群发文本消息(因为没有判断页面元素是否存在的逻辑,初始页面需停留在聊天页)

wechat_dict = d.app_info('com.tencent.mm')#获取微信应用信息
version = wechat_dict['versionName']#获取版本号
if version =='7.0.22':
    d.xpath('//*[@resource-id="com.tencent.mm:id/f8y"]').click()#搜索按钮
    d.xpath('//*[@resource-id="com.tencent.mm:id/dn7"]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]').click()#搜索输入框
    d.send_keys("测试编外群", clear=True)#输入群名
    time.sleep(2)
    d.xpath('//*[@resource-id="com.tencent.mm:id/gbv"]').click()#点击第一个群
    # d.send_keys("测试编外群", clear=True)
    time.sleep(2)
    d.xpath('//*[@resource-id="com.tencent.mm:id/g78"]').click()#聊天页面输入框
    d.set_fastinput_ime(True)
    d.send_keys("橙子好吃d", clear=True)#输入消息
    # d.send_keys("橙子好吃", clear=True)
    d.xpath('//*[@resource-id="com.tencent.mm:id/anv"]').click()#点击发送

你可能感兴趣的:(uiautomator,python)