環境
本文主要環境如下:
- Win10
- JDK1.8
- Appium
- Python3.7
- android-sdk
- mumu 模擬器
JDK
下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
配置環境變量:
計算機(右鍵)->屬性->高級系統設置->高級->環境變量->新建環境變量 JAVA_HOME
系統變量->找到 Path
變量->編輯->在變量值的末尾添加;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
新建 CLASSPATH
變量,變量值為:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
android-sdk
下載地址:https://www.androiddevtools.cn/
配置環境變量:與 JDK 配置類似,
新建環境變量 ANDROID_HOME
,變量值為 android-sdk
位置,比如:D:\android-sdk-windows
在 Path
變量值的末尾添加 ;%ANDROID_HOME%\tools;%ANDROID_HOME%\build-tools\30.0.0-preview;%ANDROID_HOME%\platform-tools
Appium
下載地址:https://github.com/appium/appium-desktop/releases/tag/v1.18.3
安裝 Python 庫:pip install appium-python-client
Appium 安裝完成啟動后,點擊編輯配置,查看 JDK 和 android-sdk 是否正確,不正確的需要手動修改
mumu
下載地址:http://www.51xiazai.cn/soft/584481.htm
mumu 模擬器下載完后,除了根據自己需要更改一下安裝路徑,其他選項默認即可安裝,裝完后打開點擊應用中心
,搜一下微信,搜到之后安裝一下,微信安裝完成后再用自己的微信號登錄一下。
因為我們是通過安卓的 adb
連接虛擬機的,因此需要在控制台執行 adb connect 127.0.0.1:7555
命令,讓 adb
連接上虛擬機。
執行了上面連接模擬器的命令后,我們可以在 cmd
控制台輸入 adb devices
查看當前連接的虛擬機。
使用
首先啟動 Appium 和 mumu,因為之前我們已經配置了 Appium,此時我們直接點擊 Appium 的啟動服務器
按鈕即可,如下圖所示:
啟動之后如圖所示:
現在我們可以先通過 Python 來啟動一下微信,代碼實現如下:
desired_caps = { "platformName": "Android", # 操作系統 "deviceName": "emulator-5554", # 設備 ID "platformVersion": "6.0.1", # 設備版本號 "appPackage": "com.tencent.mm", # app 包名 "appActivity": "com.tencent.mm.ui.LauncherUI", # app 啟動時主 Activity 'noReset': True, # 是否保留 session 信息,可以避免重新登錄 'unicodeKeyboard': True, # 使用 unicodeKeyboard 的編碼方式來發送字符串 'resetKeyboard': True # 將鍵盤給隱藏起來 } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
執行上述代碼之后,如果發現 mumu 模擬器中的微信已經啟動了,就說明基本環境已經調通了;如果執行代碼后發現調不到 mumu 模擬器中的微信,先在 cmd
中執行一下 adb connect 127.0.0.1:7555
命令,再執行程序即可。
實現微信內信息的發送(實操)
我們先來使用 Appium 實現信息發送的操作,基本過程為:
打開微信->點擊搜索輸入框->輸入文件傳輸助手->點擊文件傳輸助手->點擊文本輸入框->輸入文本->點擊發送,功能的代碼實現如下:
import time from appium import webdriver if __name__ == '__main__': desired_caps = { "platformName": "Android", # 操作系統 "deviceName": "emulator-5554", # 設備 ID "platformVersion": "6.0.1", # 設備版本號 "appPackage": "com.tencent.mm", # app 包名 "appActivity": "com.tencent.mm.ui.LauncherUI", # app 啟動時主 Activity 'noReset': True, # 是否保留 session 信息,可以避免重新登錄 'unicodeKeyboard': True, # 使用 unicodeKeyboard 的編碼方式來發送字符串 'resetKeyboard': True # 將鍵盤給隱藏起來 } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) time.sleep(5) print('點擊微信搜索框') driver.find_element_by_id('com.tencent.mm:id/f8y').click() time.sleep(5) print('在搜索框輸入搜索信息') driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('文件傳輸助手') time.sleep(3) print('點擊搜索到的內容') driver.find_element_by_id('com.tencent.mm:id/gbv').click() time.sleep(3) # 輸入文字 driver.find_element_by_id('com.tencent.mm:id/al_').send_keys('hello') time.sleep(3) # 輸入表情 driver.find_element_by_id('com.tencent.mm:id/anz').click() time.sleep(3) driver.find_element_by_id('com.tencent.mm:id/rv').click() # 點擊發送按鈕發送信息 driver.find_element_by_id('com.tencent.mm:id/anv').click() # 退出 driver.quit()
補充說明,元素定位如何選取呢?
首先我們點擊 Appium 中的放大鏡位置,如下圖所示:
我們在圖中所需功能
下方將代碼中的 desired_caps
信息配置進去,配置好后點擊啟動會話
按鈕,啟動之后我們會發現 Appium 中與 mumu 中的微信效果不一致,如下圖所示:
查找元素信息
參考地址:https://mp.weixin.qq.com/s/cMdQKerwD-UIX5Xcnb_GIw