教你一招!如何用 Python 實現 QQ 訊息自動回覆?
作者:il_持之以恆_li
https://blog。csdn。net/qq_45404396/article/details/112750110
前言
近段時間,看了一下運用python實現app自動化的影片,覺得那上面的講的不錯,於是就用所學的知識做了一個程式,實現自動回覆QQ訊息。
1. 準備工作
1.1 安裝client模組
開啟命令視窗,輸入命令:
pip install appium-python-client
1.2 安裝Appium Server
下載網址為:
http://appium。io
1.3 安裝JDK
安裝好之後,新增環境變數JAVA_HOME,指定jdk的安裝目錄,小編為:
1.4 安裝android sdk
新增一個環境變數ANDROID_HOME,設定值為sdk包的解壓目錄,小編為:
另外,最好在path裡面新增adb。exe的環境變數
1.5 投屏軟體
小編用的是米卓同屏助手,下載網址為:
https://cn。mirroid。com
2. 連線手機
小編用的USB連線,需要一條資料線,將手機和電腦端連線起來,同時需要開啟手機的開發者模式。
那麼怎樣開啟開發者模式,以小編的手機為例(OPPO手機)來到手機設定,點選關於手機,之後一直點選版本號,當出現以下字樣即可。
然後進入其他設定(不同手機可能不同),就可以看到這裡多了一個開發者選項了。
進入開發者選項,然後開啟,可以發現這裡有一個USB除錯的開關,開啟它。
開啟之後,就可以看到在這個投屏軟體上了出現了手機的畫面。
3. 測試是否連線成功
在命令視窗中輸入:adb devices -l ,如果出現以下這個畫面,應該是成功連線了!
有個時候,可能會報錯,一般原因是投屏軟體的adb。exe版本和sdk的adb。exe版本不一致導致的,(小編自己猜測的)應該只需把其中任意一個adb。exe複製到另外那個那裡就行了。
4. 程式碼實現
參考程式碼如下:
from appium import webdriverimport timedesired_caps={ ‘platformName’:‘Android’, ‘platformVersion’:‘8。1’, ‘deviceName’:‘xxx’, ‘appPackage’:‘com。tencent。qqlite’, # 自動化應用 ‘appActivity’:‘com。tencent。mobileqq。activity。SplashActivity’, #‘unicodeKeyboard’:True, #‘resetKeyboard’:True, ‘noReset’:True, ‘newCommandTimeout’:6000, ‘automationName’:‘UiAutomator2’}driver=webdriver。Remote(‘http://localhost:4723/wd/hub’,desired_caps)driver。implicitly_wait(10)driver2=driver。find_element_by_id(‘recent_chat_list’)list2=driver2。find_elements_by_class_name(‘android。widget。LinearLayout’)print(‘當前QQ訊息為%d個’%(len(list2)))time。sleep(2)list2[0]。click()def send_Message(text2:str): # 發訊息 driver4=driver。find_element_by_id(‘inputBar’) driver4。find_element_by_id(‘input’)。send_keys(text2) driver4。find_element_by_id(‘fun_btn’)。click() time。sleep(2) print(“傳送訊息:%s”%(text2))list4=[“劉邦,字季,沛郡豐邑(今江蘇省豐縣)人。中國歷史上傑出的政治家、戰略家和軍事指揮家,漢朝開國皇帝,漢民族和漢文化的偉大奠基者和開拓者,對漢族的發展以及中國的統一有突出貢獻。”,“還沒”,“湖南省,簡稱“湘”,是中華人民共和國省級行政區,省會長沙,界於北緯24°38′~30°08′,東經108°47′~114°15′之間,東臨江西,西接重慶、貴州,南毗廣東、廣西,北連湖北,總面積21。18萬平方千米。”]while True: try: driver3=driver。find_element_by_id(‘listView1’) list3=driver3。find_elements_by_class_name(‘android。widget。RelativeLayout’) text=list3[-1]。find_element_by_id(‘chat_item_content_layout’)。text print(‘收到訊息:%s’%(text)) # 接收訊息 time。sleep(5) if(text==‘你好,請幫我查閱一下劉邦的簡介’): send_Message(list4[0]) elif(text==“你吃中飯了沒”): send_Message(list4[1]) elif(text==“介紹一下湖南唄!”): send_Message(list4[2]) except Exception as e: pass
在執行程式碼的過程當中,會在手機上自動安裝一些東東,同意安裝即可。