【UIAutomator2】实现微信自动加好友功能

  【写在前头:此博客是基于python知识基础编写,仅用于个人学习使用,并非产品】

  开发思路:在实现微信自动加好友,并不是用的微信官方提供的api接口,是模拟点击手机屏幕操作。需要准备好:一部安卓手机、python环境、UIAutomator2、weditor 。
1)安卓手机:无特殊要求,能正常使用的安卓手机即可。进入设置,打开开发者模式

2)python环境:python3(习惯用anaconda来管理python版本)
3)UIAutomator2:是一个可以使用Python对Android设备进行UI自动化的库
4)weditor: weditor 工具来进行手机元素识别,将对应的元素传给UIAutomator2。

1. 环境准备

1.1 UIAutomator2安装和初始化
UIAutomator2安装

pip3 install --pre -U uiautomator2

UIAutomator2初始化

python -m uiautomator2 init

1.2 运行python代码的pc连接手机
手机连接pc,adb命令保证能正确读取到设备。有两种方法:
  1)通过WIFI,WiFi连接更方便一点,需要保持PC和手机使用的一个WIFI,查看手机连接WIFI的IP地址。手机的IP可以在设置-WIFI设置里面获取到。

import uiautomator2 as u2
c = u2.connect('192.168.168.108')

  2)通过USB数据线将手机链接电脑。手机的设备编号可以通过adb devices命令获取到。
获取手机设备编号
  下载一个adb开发工具包,配置下环境变量。连接到电脑之后,进行cmd窗口,输入如下命令,便可以查看设备的手机设备编号,

adb devices

uiautomator2 连接设备
  通过python代码,使用uiautomator2 模块连接手机。

import uiautomator2 as u2
c = u2.connect_usb('abcdef')

1.3 weditor安装

pip install -U weditor

1)pc终端输入python3 -m webditor,浏览器自动打开网页 http://atx.open.netease.com
2)网页对应位置输入手机设备ip,点击connect连接手机设备,最后根据需要获取手机/app对应元素。连接顺序如下:
  step1:设备id输入
  step2:Connect连接
  step3:reload刷新页面

1.3 准备微信号,将手机点击进入微信聊天界面
打开微信聊天界面
【UIAutomator2】实现微信自动加好友功能_第1张图片

在txt文件中准备几条微信id或者手机号,一条一行,存在本机目录。
【UIAutomator2】实现微信自动加好友功能_第2张图片

2. 代码展示

import uiautomator2 as u2
# 通过wifi连接
c = u2.connect('192.168.168.108')

# 读取文件中的微信账号
def readWechatID(filePath):
    lines = []
    with open(filePath, 'r') as file_to_read:
        while True:
            line = file_to_read.readline()
            if not line:
                break
            line = line.strip('\n')
            lines.append(line)
    return lines

# 通过搜索加好友
def addFriends(wechatID):
    c(resourceId="com.tencent.mm:id/l3").set_text(wechatID)
    c(resourceId="com.tencent.mm:id/n0").click()
    time.sleep(1)
    if(c.exists(text="该用户不存在")):
       print(wechatID,"该用户不存在")
       c(resourceId="com.tencent.mm:id/kz").click()
    elif(c.exists(text="添加到通讯录")):
        c(resourceId="com.tencent.mm:id/ct").click()
        time.sleep(1)
        if(c.exists(text="发消息")):
            print(wechatID,"已经是您的好友")
            c.press("back")
            c(resourceId="com.tencent.mm:id/kz").click()
        elif(c.exists(text="验证申请")):
            c(resourceId="com.tencent.mm:id/e49").set_text("111")
            c(resourceId="com.tencent.mm:id/ki").click()
            print(wechatID,"发送加好友请求成功")
            time.sleep(1)
            if(c.exists(text="验证申请")):
                print(wechatID,"请求有点频繁")
                c.press("back")
            c.press("back")
            c(resourceId="com.tencent.mm:id/kz").click()
    elif(c.exists(text="发消息")):
            print(wechatID,"已经是您的好友")
            c.press("back")
            c(resourceId="com.tencent.mm:id/kz").click()

#主函数
def main():
    #模拟点击右上角"+"按钮
    c(resourceId="com.tencent.mm:id/jb", className="android.widget.ImageView", instance=1).click() 
    time.sleep(1)
    #模拟点击添加朋友
    c(resourceId="com.tencent.mm:id/cx", text=u"添加朋友").click() 
    time.sleep(1)
    #模拟点击输入框
    c(resourceId="com.tencent.mm:id/d_4").click() 
    file_path=u'./name.txt'
    list = readWechatID(file_path)
    for i in list:
        time.sleep(1)
        addFriends(i)

#将手机点击进入微信主界面,然后运行main()程序
main()

你可能感兴趣的:(python,微信,python,android)