python+Appium實現(xiàn)自動添加微信號

因為某些原因(個人比較閑吧),需要幫助同事添加N多人微信:
第一天只有幾十個率寡,以為臨時幫下忙而已,
結果第二天又是幾十個乾蛤,心想應該差不多了吧;
第三天將近200個??家卖。。庙楚。花了將近一天時間馒闷,加好友,發(fā)圖片
這一個一個手機號纳账,只能用手機添加好友,看久了還會輸錯??
了解后面還不時會有添加好友的工作??(誰讓我比較閑??)
作為半個開發(fā)人員疏虫,必須要提高效率(偷懶),上網(wǎng)了解了下卧秘,度娘上很多關于使用Appium的
好吧,開干翅敌。。蚯涮。焊唬。
布置環(huán)境花了一天半(必須找點借口)看靠。。挟炬。。谤祖。
網(wǎng)上教程有的版本比較老,說的有些配置粥喜,新版文件路徑都沒有了。橘券。。一個一個試唄
說下本人做的完整過程旁舰,回頭再看,其實很簡單箭窜,就是之前試坑,各種下載纳猫,花不少時間
上干貨:

??下面幾個軟件,注意版本芜辕,不要相差太大,否則新老可能不兼容
1活孩、安裝appium依賴:nodejs,安裝完畢憾儒,命令行node -v 輸出版本號即正確
2、安裝Appium對應操作系統(tǒng)版本(本想下載最新版起趾,奈何太慢,找到國內(nèi)可下載比較新的1.15.1版本)
    系統(tǒng)變量添加 APPIUM_HOME 眶根,值為安裝路徑(這個不會問度娘蜀铲,一用就會)
3属百、安裝依賴:Android SDK记劝,SDK又依賴下面兩個—>JDK族扰,adb
    安裝成功后,打開SDK Manager下載SDK Platfrom-Tools渔呵,Extras全部包(因為需要幾個命令,不清楚時具體那幾個包扩氢,怕麻煩,就都下載了)
        添加環(huán)境變量ANDROID_HOME 录豺,值: sdk安裝路徑
        設置path,值:%ANDROID_HOME%\tools
    a巩检、安裝JDK,設置JAVA_HOME系統(tǒng)環(huán)境變量兢哭,值為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 出現(xiàn)成功標志(看了好幾個教程都是有這個的,但是我的真沒有)
如果使用真機苟耻,打開開發(fā)者模式,鏈接電腦凶杖,命令行輸入 adb devices ,看到設備鏈接上就可以了
如果是模擬器,我用的夜神官卡,開發(fā)者模式; adb connect 127.0.0.1:62001 ,然后再輸入上面命令查看,有設備就成功了
如果不需要個性化功能哮翘,就可以了,如果有更多想法饭寺,就找Appium教程,這里不贅述

python代碼:
python代碼依賴模塊:appium-python-client
說明:下面代碼中的id艰匙,看到的三個版本都不一樣,我的示例和他們又不一樣(使用Apppium還是比較容易找出來的)员凝;
如果你復制了代碼不能用,也許你也需要一個個找出來了健霹;在寫這個時,無意中看到itchat功能很強大糖埋,容易用,但是封號風險也比較高??瞳别,如果還沒入坑的,還會python的祟敛,可以使用它試試,畢竟只要python就可以垒棋,不需要那么多軟件安裝調(diào)試;如果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參數(shù)
    desired_caps = {
        "platformName": "Android",     # 平臺名具练,根據(jù)實際寫
        "deviceName": "127.0.0.1:62001", # 設備鏈接端口號甜无,根據(jù)實際
        "platformVersion": "5.1.1",  # 使用的系統(tǒng)版本,根據(jù)實際
        "appPackage": "com.tencent.mm",  # 應用程序名
        "appActivity": ".ui.LauncherUI",  # app激活方式
        "noReset": True,  # 不重置岂丘,不知道,猜是登錄狀態(tài)奥帘,緩存什么的
        "automationName": "UiAutomator1",  # 定義自動運行后的名稱
        "autoGrantPermission": True,  # 自動授權
        "unicodeKeyboard": True  # Unicode字符鍵盤
    }
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  # 固定
    sleep(4)    #睡眠時間,根據(jù)自己的系統(tǒng)性能定義寨蹋,差就時間定長點
    #選擇并點擊查找按鈕
    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:
            # 找到了用戶
            #("檢查用戶是否已經(jīng)是好友。吐句。。")
            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)
                    # 發(fā)送申請
                    print("發(fā)送申請")
                    driver.find_element_by_id("com.tencent.mm:id/ch").click()
                except:
                    # 將沒有成功發(fā)送好友申請的號碼記錄下來
                    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)  #讀取文件數(shù)據(jù)氧秘,看個人方便,pandas丸相,數(shù)據(jù)庫讀取,文本文檔都可以
    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!")
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市座硕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌华匾,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蜘拉,死亡現(xiàn)場離奇詭異有鹿,居然都是意外死亡旭旭,警方通過查閱死者的電腦和手機印颤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來年局,“玉大人咸产,你說我怎么就攤上這事矢否∧砸纾” “怎么了?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵屑彻,是天一觀的道長。 經(jīng)常有香客問我社牲,道長,這世上最難降的妖魔是什么搏恤? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮熟空,結果婚禮上,老公的妹妹穿的比我還像新娘息罗。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布温圆。 她就那樣靜靜地躺著录淡,像睡著了一般捌木。 火紅的嫁衣襯著肌膚如雪嫉戚。 梳的紋絲不亂的頭發(fā)上刨裆,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天彬檀,我揣著相機與錄音,去河邊找鬼窍帝。 笑死,一個胖子當著我的面吹牛坤学,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播深浮,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼飞苇!你這毒婦竟也來了?” 一聲冷哼從身側響起布卡,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忿等,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體这弧,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年皇帮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片属拾。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡将谊,死狀恐怖渐白,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情纯衍,我是刑警寧澤,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布襟诸,位于F島的核電站,受9級特大地震影響歌亲,放射性物質發(fā)生泄漏。R本人自食惡果不足惜陷揪,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望悍缠。 院中可真熱鬧,春花似錦飞蚓、人聲如沸迎卤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽八堡。三九已至聘芜,卻和暖如春兄渺,著一層夾襖步出監(jiān)牢的瞬間汰现,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工瞎饲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嗅战。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓俺亮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親脚曾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355

推薦閱讀更多精彩內(nèi)容