因為某些原因(個人比較閑吧),需要幫助同事添加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!")