python+Appium实现自动添加微信号

因为某些原因(个人比较闲吧),需要帮助同事添加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!")
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容