因为某些原因(个人比较闲吧),需要帮助同事添加N多人微信:
第一天只有几十个,以为临时帮下忙而已,
结果第二天又是几十个,心想应该差不多了吧;
第三天将近200个😩。。。花了将近一天时间,加好友,发图片
这一个一个手机号,只能用手机添加好友,看久了还会输错😟
了解后面还不时会有添加好友的工作😫(谁让我比较闲😔)
作为半个开发人员,必须要提高效率(偷懒),上网了解了下,度娘上很多关于使用Appium的
好吧,开干。。。。
布置环境花了一天半(必须找点借口)。。。。。
网上教程有的版本比较老,说的有些配置,新版文件路径都没有了。。。一个一个试呗
说下本人做的完整过程,回头再看,其实很简单,就是之前试坑,各种下载,花不少时间
上干货:
🔶下面几个软件,注意版本,不要相差太大,否则新老可能不兼容
1、安装appium依赖:nodejs,安装完毕,命令行node -v 输出版本号即正确
2、安装Appium对应操作系统版本(本想下载最新版,奈何太慢,找到国内可下载比较新的1.15.1版本)
系统变量添加 APPIUM_HOME ,值为安装路径(这个不会问度娘,一用就会)
3、安装依赖:Android SDK,SDK又依赖下面两个—>JDK,adb
安装成功后,打开SDK Manager下载SDK Platfrom-Tools,Extras全部包(因为需要几个命令,不清楚时具体那几个包,怕麻烦,就都下载了)
添加环境变量ANDROID_HOME ,值: sdk安装路径
设置path,值:%ANDROID_HOME%\tools
a、安装JDK,设置JAVA_HOME系统环境变量,值为JDK安装目录
设置 classpath变量,%JAVA_HOME%\lib;
设置 path值 %JAVA_HOME%\bin; %JAVA_HOME%\jre\bin
下载的14.0.1没有后面\jre\bin路径
b、安装adb,压缩包解platform-tools 压到sdk安装目录下(如果上面Extra是全部下载,adb应该就有了)
设置变量path,值:%ANDROID_HOME%\platform-tools
????配置成功,命令行输入 appium-doctor 出现成功标志(看了好几个教程都是有这个的,但是我的真没有)
如果使用真机,打开开发者模式,链接电脑,命令行输入 adb devices ,看到设备链接上就可以了
如果是模拟器,我用的夜神,开发者模式; adb connect 127.0.0.1:62001 ,然后再输入上面命令查看,有设备就成功了
如果不需要个性化功能,就可以了,如果有更多想法,就找Appium教程,这里不赘述
python代码:
python代码依赖模块:appium-python-client
说明:下面代码中的id,看到的三个版本都不一样,我的示例和他们又不一样(使用Apppium还是比较容易找出来的);
如果你复制了代码不能用,也许你也需要一个个找出来了;在写这个时,无意中看到itchat功能很强大,容易用,但是封号风险也比较高😓,如果还没入坑的,还会python的,可以使用它试试,毕竟只要python就可以,不需要那么多软件安装调试;如果id不能用了,就学下Appium教程,把id找出来😄
from appium import webdriver
from time import sleep, ctime
import xlrd
def write_fail(mobile): # 保存查找到微信号,但是添加失败
with open("fail.txt","a") as f:
f.write(mobile + str(ctime()) + "\n")
f.close()
def not_exist(mobile): # 保存查找用户不存在的
with open("not_exist.txt","a") as f:
f.write(mobile + "\n")
f.close()
def get_data(mobile,word,note):
# 设置模拟器及APP参数
desired_caps = {
"platformName": "Android", # 平台名,根据实际写
"deviceName": "127.0.0.1:62001", # 设备链接端口号,根据实际
"platformVersion": "5.1.1", # 使用的系统版本,根据实际
"appPackage": "com.tencent.mm", # 应用程序名
"appActivity": ".ui.LauncherUI", # app激活方式
"noReset": True, # 不重置,不知道,猜是登录状态,缓存什么的
"automationName": "UiAutomator1", # 定义自动运行后的名称
"autoGrantPermission": True, # 自动授权
"unicodeKeyboard": True # Unicode字符键盘
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 固定
sleep(4) #睡眠时间,根据自己的系统性能定义,差就时间定长点
#选择并点击查找按钮
driver.find_element_by_id("com.tencent.mm:id/ef9").click()
# ('点击:添加好友')
driver.find_elements_by_class_name("android.widget.LinearLayout")[4].click()
sleep(1)
#输入手机号
driver.find_element_by_id("com.tencent.mm:id/fcn").click()
driver.find_element_by_id("com.tencent.mm:id/bhn").send_keys(mobile) # 输入手机号到文本框
#点击查找qq手机号
driver.find_element_by_id("com.tencent.mm:id/ga1").click()
sleep(1)
try:
#("检查用户是否存在。。。")
try:
driver.find_element_by_id("com.tencent.mm:id/aze") # 不存在标志,不报错则用户不存在
print("该用户不存在:%s" %mobile)
not_exist(mobile)
except:
# 找到了用户
#("检查用户是否已经是好友。。。")
t = driver.find_elements_by_id("com.tencent.mm:id/g6f")
if len(t) == 1:
# 如果是 1 个元素,则可加好友
try:
driver.find_element_by_id("com.tencent.mm:id/g6f").click()
# 填写备注
origintext = driver.find_element_by_id("com.tencent.mm:id/f5h").text # 获取的用户昵称
driver.find_element_by_id("com.tencent.mm:id/f5h").clear() # 清空用户昵称文本
driver.find_element_by_id("com.tencent.mm:id/f5h").send_keys(origintext + word) # 设置用户备注名
sleep(1)
# 申请理由
driver.find_element_by_id("com.tencent.mm:id/f5e").clear()
driver.find_element_by_id("com.tencent.mm:id/f5e").send_keys(note)
# 发送申请
print("发送申请")
driver.find_element_by_id("com.tencent.mm:id/ch").click()
except:
# 将没有成功发送好友申请的号码记录下来
print("%s : 添加失败,记录到文件..."%mobile)
write_fail(mobile)
else:
print("已是好友: %s" % mobile)
else:
exit() # 用户不存在,改成错误信号
except:
print("进行下一个用户添加...")
if __name__ == '__main__':
#好友申请,文件路径
file_name = "test.xlsx"
file = xlrd.open_workbook(file_name) #读取文件数据,看个人方便,pandas,数据库读取,文本文档都可以
sheet = file.sheet_by_name("Sheet1")
mobiles = sheet.col_values(2, 1) #手机号列表
words = sheet.col_values(1,1) #备注名列表
note = u"pppppppppp" # 自定义的申请用语
for i in range(len(mobiles)):
mobile = str(mobiles[i])
word = words[i]
print(word)
get_data(mobile,word,note)
print("Done!")