【python】自动化连接和操作手机微信
文章目录
1. 环境配置
- JDK
- Android SDK
- Appium
- MuMu
1.1. JDK
1.1.1. 下载安装
去华为云镜像下载JDK
,我下载的版本是:jdk-8u181-windows-x64.exe
1.1.2. 环境变量
1、环境变量->系统变量->新建:变量名JAVA_HOME
,变量值D:\Program Files\Java\jdk1.8.0_181
2、环境变量->系统变量->Path->编辑->编辑文本:在变量值末尾添加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
1.2. Android SDK
安卓开发工具网:https://www.androiddevtools.cn/
1.2.1. 下载解压
1、下载SDK Tools
,我下载的版本是android-sdk_r24.4.1-windows.zip
,把解压出来的android-sdk-windows
文件夹放到D:\Program Files
目录下。
2、下载SDK Platform-Tools
,我下载的版本是platform-tools_r22-windows.zip
,把解压出来的platform-tools
文件夹放在D:\Program Files\android-sdk-windows
目录下。
3、下载Build-Tools
,我下载的版本是21.1.2.rar
,解压后将21.1.2
文件夹放到D:\Program Files\android-sdk-windows\build-tools
目录下。
1.2.2. 环境变量
1、环境变量->系统变量->新建:变量名ANDROID_HOME
,变量值D:\Program Files\android-sdk-windows
2、环境变量->系统变量->Path->编辑->编辑文本:在变量值末尾添加%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\21.1.2;%ANDROID_HOME%\platform-tools;
1.3. Appium
1.3.1. 下载解压
从上述github
地址下载Appium
,我下载的版本是Appium-windows-1.18.3.zip
,无需安装,解压即可。
1.3.2. 编辑配置
1、双击Appium.exe
运行软件,点击编辑配置
2、它这里已经把我们之前配置的JAVA_HOME
和ANDROID_HOME
自动补上了,我们就不用填了,如果没有,请再填一下
1.3.3. 模块安装
pip install appium-python-client
1.4. MuMu
MuMu官网:http://mumu.163.com/
从官网下载并安装网易MuMu模拟器(非手游助手)。安装模拟器后,去应用中心下载并安装微信,然后登录。
2. 连接模拟器
打开cmd
控制台,输入命令adb connect 127.0.0.1:7555
即可连接模拟器。
Microsoft Windows [版本 10.0.18363.1198]
(c) 2019 Microsoft Corporation。保留所有权利。
C:\Users\ghgxj>adb connect 127.0.0.1:7555
connected to 127.0.0.1:7555
3. 启动服务器
1、点击启动
2、启动成功
3、要一直保持Appium服务器运行,不能将它的窗口关闭
4. 启动微信
获取微信的appPackage和appActivity:
1、在mumu
中打开并登录微信,然后cmd
中运行下方命令:
adb shell dumpsys activity recents | find "intent={"
2、找到cmp=com.tencent.mm/.ui.LauncherUI
3、/
前面的com.tencent.mm
就是appPackage
4、/
后面的.ui.LauncherUI
是appActivity
5、这两个参数我们写python
代码的时候会用到
5. 连接测试
mumu中先关闭微信窗口,然后运行下方代码的同时观察mumu模拟器,如果微信启动则说明连接成功。
from appium import webdriver
caps = {
"platformName": "Android",
"deviceName": "emulator-5554",
"platformVersion": "6.0.1",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI",
"noReset": "True",
"unicodeKeyboard": "True",
"resetKeyboard": "True"
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
6. 微信编程
既然已经能通过python代码连接微信了,下面我们来操作微信实现一个简单的通过微信号添加好友的功能。
6.1. 具体流程
- 点击⊕号
- 点击添加朋友
- 点击搜索框
- 输入微信号
- 点击搜索
- 点击名片
- 点击添加到通讯录
- 点击发送
6.2. 完整代码
from appium import webdriver
import time
# 连接手机微信
caps = {
"platformName": "Android",
"deviceName": "emulator-5554",
"platformVersion": "6.0.1",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI",
"noReset": "True",
"unicodeKeyboard": "True",
"resetKeyboard": "True"
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)
# 发送好友申请
try:
time.sleep(10)
print('点击⊕号')
driver.find_element_by_id('com.tencent.mm:id/ef9').click()
time.sleep(5)
print('点击添加朋友')
driver.find_elements_by_id('com.tencent.mm:id/gam')[1].click()
time.sleep(5)
print('点击搜索框')
driver.find_element_by_id('com.tencent.mm:id/f98').click()
time.sleep(5)
print('输入微信号')
driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('wxhghgxj')
time.sleep(5)
print('点击搜索')
driver.find_element_by_id('com.tencent.mm:id/f94').click()
time.sleep(5)
print('点击名片')
driver.find_element_by_id('com.tencent.mm:id/az_').click()
time.sleep(5)
print('点击添加到通讯录')
driver.find_element_by_id('com.tencent.mm:id/g6f').click()
time.sleep(5)
print('点击发送')
driver.find_element_by_id('com.tencent.mm:id/ch').click()
except Exception as e:
print(e)
6.3. 元素定位
从代码中不难发现,问题的关键是元素定位,我们一般通过元素id
来定位,比如我们在微信中找一下⊕
。
1、点击搜索
2、JSON Representation中输入:
{
"platformName": "Android",
"deviceName": "emulator-5554",
"platformVersion": "6.0.1",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI",
"noReset": "True",
"unicodeKeyboard": "True",
"resetKeyboard": "True"
}
3、点击启动会话
4、鼠标移动到⊕
,可以看到元素的id
是com.tencent.mm:id/ef9
5、然后再通过以下代码即可实现元素的定位和点击
driver.find_element_by_id('com.tencent.mm:id/ef9').click()
7. 引用参考
https://www.cnblogs.com/lexus168/p/12573025.html
https://mp.weixin.qq.com/s/cMdQKerwD-UIX5Xcnb_GIw
8. 温馨提示
本文所有安装包+代码下载地址:
天翼云盘 (力荐):点击下载
坚果云盘 (推荐):点击下载
微软云盘 (推荐):点击下载
百度网盘 (限速):点击下载 (提取码:s2fc )