Python+Appium自動化操作微信的教程分享
簡介
Appium 是一個開源的自動化測試工具,支持 Android、iOS 平臺上的原生應(yīng)用,支持 Java、Python、PHP 等多種語言。
Appium 封裝了 Selenium,能夠為用戶提供所有常見的 JSON 格式的 Selenium 命令以及額外的移動設(shè)備相關(guān)的控制命令,比如:多點觸控手勢、屏幕朝向等。
環(huán)境
本文主要環(huán)境如下:
- Win7
- JDK1.8
- Appium
- Python3.7
- android-sdk
- mumu 模擬器
JDK
下載地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
配置環(huán)境變量:
1.計算機(右鍵)->屬性->高級系統(tǒng)設(shè)置->高級->環(huán)境變量->新建環(huán)境變量 JAVA_HOME
,如圖所示:
2.系統(tǒng)變量->找到 Path
變量->編輯->在變量值的末尾添加;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
3.新建 CLASSPATH
變量,變量值為:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
android-sdk
下載地址:https://www.androiddevtools.cn/
配置環(huán)境變量:
- 與 JDK 配置類似,新建環(huán)境變量
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 模擬器下載完后,除了根據(jù)自己需要更改一下安裝路徑,其他選項默認即可安裝,裝完后打開點擊應(yīng)用中心,搜一下微信,搜到之后安裝一下,微信安裝完成后再用自己的微信號登錄一下。
因為我們是通過安卓的 adb
連接虛擬機的,因此需要在控制臺執(zhí)行 adb connect 127.0.0.1:7555
命令,讓 adb
連接上虛擬機。
執(zhí)行了上面連接模擬器的命令后,我們可以在 cmd
控制臺輸入 adb devices
查看當(dāng)前連接的虛擬機。
使用
首先啟動 Appium 和 mumu,因為之前我們已經(jīng)配置了 Appium,此時我們直接點擊 Appium 的啟動服務(wù)器按鈕即可,如下圖所示:
啟動之后如圖所示:
現(xiàn)在我們可以先通過 Python 來啟動一下微信,代碼實現(xiàn)如下:
desired_caps = { "platformName": "Android", # 操作系統(tǒng) "deviceName": "emulator-5554", # 設(shè)備 ID "platformVersion": "6.0.1", # 設(shè)備版本號 "appPackage": "com.tencent.mm", # app 包名 "appActivity": "com.tencent.mm.ui.LauncherUI", # app 啟動時主 Activity 'noReset': True, # 是否保留 session 信息,可以避免重新登錄 'unicodeKeyboard': True, # 使用 unicodeKeyboard 的編碼方式來發(fā)送字符串 'resetKeyboard': True # 將鍵盤給隱藏起來 } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
執(zhí)行上述代碼之后,如果發(fā)現(xiàn) mumu 模擬器中的微信已經(jīng)啟動了,就說明基本環(huán)境已經(jīng)調(diào)通了;如果執(zhí)行代碼后發(fā)現(xiàn)調(diào)不到 mumu 模擬器中的微信,先在 cmd
中執(zhí)行一下 adb connect 127.0.0.1:7555
命令,再執(zhí)行程序即可。
添加好友
我們先來使用 Appium 實現(xiàn)添加好友的操作,基本過程為:打開微信->點擊⊕->選擇添加朋友->在搜索框輸入微信號->點擊搜索->點擊添加到通訊錄,功能的代碼實現(xiàn)如下:
desired_caps = { "platformName": "Android", # 操作系統(tǒng) "deviceName": "emulator-5554", # 設(shè)備 ID "platformVersion": "6.0.1", # 設(shè)備版本號 "appPackage": "com.tencent.mm", # app 包名 "appActivity": "com.tencent.mm.ui.LauncherUI", # app 啟動時主 Activity 'noReset': True, # 是否保留 session 信息,可以避免重新登錄 'unicodeKeyboard': True, # 使用 unicodeKeyboard 的編碼方式來發(fā)送字符串 'resetKeyboard': True # 將鍵盤給隱藏起來 } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) time.sleep(10) print('點擊+號') driver.find_element_by_id('com.tencent.mm:id/ef9').click() time.sleep(5) print('選擇添加朋友') driver.find_elements_by_id('com.tencent.mm:id/gam')[1].click() time.sleep(5) print('點擊搜索框') driver.find_element_by_id('com.tencent.mm:id/fcn').click() time.sleep(5) print('在搜索框輸入微信號') driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('ityard') time.sleep(3) print('點擊搜索') driver.find_element_by_id('com.tencent.mm:id/ga1').click() time.sleep(3) print('點擊添加到通訊錄') driver.find_element_by_id('com.tencent.mm:id/g6f').click()
簡單說一下,在代碼中我們通過 driver.find_element_by_id('com.tencent.mm:id/xx')
來獲取微信上的元素,如果有重復(fù)的,則可以使用 driver.find_elements_by_id('com.tencent.mm:id/xx')[n]
來取,通過 send_keys('xx')
實現(xiàn)信息的輸入,通過 click()
實現(xiàn)點擊操作。
上面我們說了通過 find_element(s)_by_id('com.tencent.mm:id/xx')
來獲取元素,那么如何來確定 xx
呢?下面來一起看一下。
首先我們點擊 Appium 中的放大鏡位置,如下圖所示:
點擊之后會進到如下界面:
我們在圖中所需功能下方將代碼中的 desired_caps
信息配置進去,配置好后點擊啟動會話按鈕,啟動之后我們會發(fā)現(xiàn) Appium 中與 mumu 中的微信效果不一致,如下圖所示:
此時只需點擊一下上圖中紅框圈起來的刷新按鈕即可,現(xiàn)在我們就可以確定元素的值了(也就是上面說的 xx
),比如:我們來確定微信中添加位置 ⊕
的值,用鼠標(biāo)點擊 ⊕
即可查看,如下圖所示:
我們接著點擊 ⊕
,操作步驟為:先到 mumu 模擬器中點擊微信中的 ⊕
,如下圖所示:
點擊之后再到 Appium 中點擊刷新按鈕,如下圖所示:
從圖中我們可以看列表中每個選項的值都是 com.tencent.mm:id/gam
,此時代碼中我們就是用的 driver.find_elements_by_id('com.tencent.mm:id/gam')[1]
來取的,通過上面的介紹相信大家對 Appium 的使用已經(jīng)基本了解了。
發(fā)送消息
發(fā)送消息我們模擬的基本流程是:打開微信->點擊搜索的放大鏡->在搜索框輸入好友昵稱->點擊搜索到的好友->發(fā)送文字+表情,代碼實現(xiàn)如下:
desired_caps = { "platformName": "Android", # 操作系統(tǒng) "deviceName": "emulator-5554", # 設(shè)備 ID "platformVersion": "6.0.1", # 設(shè)備版本號 "appPackage": "com.tencent.mm", # app 包名 "appActivity": "com.tencent.mm.ui.LauncherUI", # app 啟動時主 Activity 'noReset': True, # 是否保留 session 信息,可以避免重新登錄 'unicodeKeyboard': True, # 使用 unicodeKeyboard 的編碼方式來發(fā)送字符串 'resetKeyboard': True # 將鍵盤給隱藏起來 } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) time.sleep(10) print('點擊微信搜索框') driver.find_element_by_id('com.tencent.mm:id/f8y').click() time.sleep(10) print('在搜索框輸入搜索信息') driver.find_element_by_id('com.tencent.mm:id/bhn').send_keys('Python小二') time.sleep(3) print('點擊搜索到的好友') driver.find_element_by_id('com.tencent.mm:id/tm').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() # 點擊發(fā)送按鈕發(fā)送信息 driver.find_element_by_id('com.tencent.mm:id/anv').click() # 退出 driver.quit()
最后說一點,因模擬器反應(yīng)可能會慢一些,如果程序執(zhí)行時出錯,可以將中間的等待時間 time.sleep(x)
設(shè)置大一些。
到此這篇關(guān)于Python+Appium自動化操作微信的教程分享的文章就介紹到這了,更多相關(guān)Python Appium自動化操作微信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pygame面向?qū)ο蟮娘w行小鳥實現(xiàn)(Flappy bird)
這篇文章主要介紹了pygame面向?qū)ο蟮娘w行小鳥實現(xiàn)(Flappy bird),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Numpy中的shape、reshape函數(shù)的區(qū)別
本文主要介紹了Numpy中的shape、reshape函數(shù)的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07Python IDE環(huán)境之 新版Pycharm安裝詳細教程
這篇文章主要介紹了Python IDE環(huán)境之 新版Pycharm安裝教程,本文教程給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03Django中如何使用celery異步發(fā)送短信驗證碼詳解
Celery是Python開發(fā)的分布式任務(wù)調(diào)度模塊,這篇文章主要給大家介紹了關(guān)于Django中如何使用celery異步發(fā)送短信驗證碼的相關(guān)資料,主要內(nèi)容包括基礎(chǔ)介紹、工作原理、完整代碼等方面,需要的朋友可以參考下2021-09-09