python3.6+Appium实现手机微信自动回复
一、環境準備
1、jdk1.8.0
2、android-sdk_r24.4.1-windows.zip
3、Python3.6
4、Appium-Server-GUI-windows-1.22.0.zip
5、Appium-Python-Client
6、Appium-Inspector-windows-2021.12.2.zip
簡單說明:jdk為java運行環境,SDK為Android運行環境,Python3.6+Appium-Python-Client庫為Appium客戶端,Appium-Server為Appium服務器,Appium-Inspector用于定位頁面元素。
二、Appium框架原理、加載過程
Appium基本原理為
?Appium加載過程為
?
?
三、實戰
1、在appium安裝目錄雙擊Appium Server GUI.exe先啟動服務器,點擊編輯配置,填入SDK和jdk根目錄,保存后啟動服務器。
Appium Server啟動成功
2、執行代碼,啟動微信APP
? ? ? ? 執行代碼前需要安裝Appium-Python-Client庫,用于連接Appium服務器。
????????platformName是設備系統類型,deviceName為設備名稱,appPackage為應用包名,appActivity為應用啟動入口,noReset為不在會話前重置應用狀態,默認為false ?切記要保證為True,不然APP數據會被清掉,所有聊天記錄都清空,血的教訓。。。
deviceName、appPackage、appActivity這三個東西可以在如下連接方法找到https://blog.csdn.net/l15767016983/article/details/122943734
如果deviceName想為IP:port,則需要在如下連接方法找到deviceName
https://blog.csdn.net/l15767016983/article/details/122939195
from appium import webdriverif __name__ == '__main__':desired_caps = {"platformName": "Android","deviceName": "81c94a60","appPackage": "com.tencent.mm","appActivity": "com.tencent.mm.ui.LauncherUI","noReset": True}driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)? ? ? ? 運行代碼前需要確保Appium服務器正常運行,不然會連接不了服務器。
3、Inspector定位元素
? ? ? ? 安裝完Inspector后在安裝目錄雙擊Appium Inspector.exe運行Inspector,填寫請求JSON
?啟動會話,微信被成功啟動。
?Inspector有幾個小工具,包括選擇元素、錄制代碼、滑動坐標、點擊坐標點、刷新等工具用于操作頁面。
?可以找到元素的ID、CLASS_NAME、XPATH等信息,用于操作元素。
(1)點擊元素,進入和某人的聊天頁面。
name="對方正在輸入..." count=1 while True:#循環等待消息print("第{0}次循環。。。".format(count))child = driver.find_elements(AppiumBy.ID, "com.tencent.mm:id/btg")for i in child:try:msg_person=i.find_element(AppiumBy.ID, "com.tencent.mm:id/hga").text#聯系人昵稱if name in msg_person:msg_count=i.find_element(AppiumBy.ID, "com.tencent.mm:id/kn6").text#新消息數if int(msg_count)>0:#和某人的消息數大于0則進入該聊天i.click()driver.find_element(AppiumBy.ID, "com.tencent.mm:id/fz").click()#返回上一步except Exception:passcount+=1time.sleep(5)?(2)點擊輸入框,輸入聊天內容,發送內容。如果想自動回復各種消息可以弄一個聊天機器人,例如圖靈,可以免費注冊。
b4a=driver.find_element(AppiumBy.ID,"com.tencent.mm:id/b4a")#輸入框 b4a.click()#需要點擊一下喚起鍵盤,不然全面屏可能找不到發送的元素 b4a.send_keys(msg) driver.find_element(AppiumBy.ID,"com.tencent.mm:id/b8k").click()#點擊發送?(3)查看當前頁面的聊天記錄。
????????時間ID為com.tencent.mm:id/b8z,文字/小表情的ID為com.tencent.mm:id/b4b,大表情包ID為com.tencent.mm:id/b4c,發送者昵稱ID為com.tencent.mm:id/b3s。
child=driver.find_element(AppiumBy.ID, "com.tencent.mm:id/b79").find_elements(AppiumBy.XPATH, ".//*")for i in child:resource_Id=i.get_attribute("resourceId")if resource_Id:text=i.get_attribute("text")if "com.tencent.mm:id/b8z" in resource_Id:msg_time = text# 1 時間print(msg_time)elif "com.tencent.mm:id/b3s" in resource_Id:sender = i.get_attribute("contentDescription")# 2 發送者print(sender)elif "com.tencent.mm:id/b4b" in resource_Id:text_msg= text# 3 文字消息/小表情print(text_msg)elif "com.tencent.mm:id/b4c" in resource_Id:big_msg = "[表情]"# 4 大表情print(big_msg)(4)滑動頁面,加載更多聊天記錄。
size = driver.get_window_size() driver.swipe(size['width'] * 0.5, size['height'] * 0.25, size['width'] * 0.5, size['height'] * 0.65)(5)打印整頁XML資源
print(driver.page_source)#打印整頁XML資源總結
以上是生活随笔為你收集整理的python3.6+Appium实现手机微信自动回复的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【英语天天读】I want I do I
- 下一篇: Eclipse与github整合完整版