一、Appium安裝
我們知道selenium是桌面瀏覽器自動化操作工具(Web Browser Automation)
appium是繼承selenium自動化思想旨在使手機(jī)app操作也能自動化的工具(Mobile App Automation Made Awesome)。
appium可以通過Desktop App和npm兩種方式安裝。Desktop App類似于selenium IDE提供一個圖形界面式操作工具;npm類似于selenium就只能使用命令行。
如果對appium還不太熟悉,推薦使用Desktop App安裝,這樣一些操作我們可以使用Desktop App來輸出代碼,寫代碼時就有個參考。
1.1 安裝Android SDK
要想操作安卓手機(jī)需要Android SDK,所以在安裝appium之前先安裝Android SDK。
推薦直接安裝Android Studio然后使用Android Studio安裝SDK(太慢可通過圖中HTTP Proxy設(shè)置代理)。
菜單----Tools----SDK Manager,鉤選自己要安裝的版本點(diǎn)擊Apply進(jìn)行下載即可。
![](/d/20211017/9e3e6f2a20e75d609aa381ce787f3af9.gif)
Android SDK安裝完成后,新建ANDROID_HOME環(huán)境變量,值為上圖Android SDK Location的目錄(我這里是“D:\Language\ASDK”)
![](/d/20211017/1b1f7391a7a07d99c7eb2ec6ddee236f.gif)
1.2 通過Desktop App安裝(推薦)
下載地址:https://github.com/appium/appium-desktop/releases
選擇操作系統(tǒng)對應(yīng)版本下載,Windows直接雙擊安裝即可。
![](/d/20211017/49c915637506a146d35565d8e5829b61.gif)
1.3 通過npm安裝
1.3.1 安裝nodejs
appium本質(zhì)是一個nodejs庫所以要先安裝nodejs,然后使用npm安裝。
nodejs下載地址:https://nodejs.org/zh-cn/download/
下載zip包解壓到自己想放的目錄,然后把該目錄加入Path環(huán)境變量即可。
1.3.2 安裝appium
安裝appium的過程中安裝chromedriver時會連接google網(wǎng)站上去(報錯RequestError: Error: connect ETIMEDOUT 216.58.220.208:443),所以可能你需要參考以下命令設(shè)置一下npm代理
# 設(shè)置代理
npm config set proxy http://127.0.0.1:1080
npm config set https-proxy http://127.0.0.1:1080
# 如果代理需要用戶名密碼
npm config set proxy http://username:password@127.0.0.1:1080
npm config set https-proxy http://username:password@127.0.0.1:1080
# 注冊npm倉庫
npm config set registry https://registry.npmjs.org
# 查看當(dāng)前配置項npm config getnpm config get proxy
# 刪除代理配置
npm config delete proxy
npm config delete https-proxy
配置本質(zhì)上會存放到“C:\Users\你的用戶名\.npmrc”內(nèi),所以也可以直接修改該文件。
1.3.3 使用appinum-doctor確認(rèn)環(huán)境配置無誤
npm install -g appium-doctor
appium-doctor --android
![](/d/20211017/3be7b2f813eed7391ccb5c1849142a2a.gif)
二、手機(jī)連接appium
2.1 啟動appium服務(wù)
如果是通過npm安裝,appium會被安裝到nodejs目錄下,直接使用appium命令啟動即可
![](/d/20211017/283a79936cfd48071f34d52972be9717.gif)
我這里使用Desktop App方式安裝,安裝完成后雙擊桌面上的圖標(biāo)界面如下:
![](/d/20211017/fca7af657bdb06adeeaa7bd13451daf9.gif)
我們使用默認(rèn)配置都不修改,直接點(diǎn)擊“Start Server”按鈕啟動
![](/d/20211017/f7ab183905c2ce2c5241df451371938e.gif)
2.2 手機(jī)使用數(shù)據(jù)線連接電腦
使用數(shù)據(jù)線把手機(jī)連接到開啟appium的電腦,開啟usb調(diào)試功能??墒褂胊db命令列出設(shè)備確保連接成功
![](/d/20211017/94a6eba3d9cabc820b9ba18f315a1c18.gif)
三、 使用示例
下邊以python3+appium打開微信并登錄進(jìn)行演示。python操作appium是通過向appnium的監(jiān)聽端口發(fā)報文實現(xiàn)的,所以python不用安裝什么appium庫。
3.1 Desktop App打開微信并登錄
![](/d/20211017/a6af7ef067b659f6271c43231c1a8c2d.gif)
添加以下四項值,完后點(diǎn)擊“Start Session”。
platformName---設(shè)備平臺。填A(yù)ndroid或IOS
deviceName----設(shè)備名。按上邊adb查出的設(shè)備名填寫即可
appPackage----要啟動的app的包名。微信是"com.tencent.mm"
appActivity----要啟動的界面。微信啟動界面是".ui.LauncherUI"
{
"platformName": "Android",
"deviceName": "HWEVA",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI"
}
![](/d/20211017/253b0de4054316c446ed0a9cac580b8e.gif)
選擇xml控件,對應(yīng)部份就會高亮顯示。
![](/d/20211017/a441ece2b895d40dc119269648e21849.gif)
點(diǎn)擊開始錄制,然后在該appium界面上操作(注意不是自己直接在手機(jī)上操作),操作過程就會被記錄下來然后可輸出該過程對應(yīng)的python代碼
![](/d/20211017/3844a6b180f5008cd336b1b560dbc88d.gif)
操作過程就會被記錄下來,在Recorder下拉選擇語言即可輸出操作對應(yīng)的代碼
![](/d/20211017/2e45785c2affd9c12625b2886c00fb64.gif)
3.2 全代碼自動化登錄實現(xiàn)
Desktop App已給出界面內(nèi)操作的代碼,全代碼自動化主要的其實只是打開該界面的代碼。
首先我們先安裝兩個依賴庫
pip install Appium-Python-Client Selenium
代碼補(bǔ)全如下,Appium-Python-Client繼承自Selenium所以使用方法和selenium是很類似的,更多api操作見:https://github.com/appium/python-client
from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# appium服務(wù)監(jiān)聽地址
server='http://localhost:4723/wd/hub'
# app啟動參數(shù)
desired_caps={
"platformName": "Android",
"deviceName": "HWEVA",
"appPackage": "com.tencent.mm",
"appActivity": ".ui.LauncherUI"
}
# 驅(qū)動
driver = webdriver.Remote(server,desired_caps)
wait = WebDriverWait(driver,30)
# 獲取登錄按鈕
login_btn = wait.until(EC.presence_of_element_located((By.ID,"com.tencent.mm:id/drp")))
# 點(diǎn)擊登錄按鈕
login_btn.click()
# 獲取手機(jī)號文本框
phone_text = wait.until(EC.presence_of_element_located((By.ID,"com.tencent.mm:id/ji")))
# 填寫手機(jī)號文本框
phone_text.send_keys("18888888888")
更多關(guān)于Appium的使用方法請查看下面的相關(guān)鏈接
您可能感興趣的文章:- Python使用Appium在移動端抓取微博數(shù)據(jù)的實現(xiàn)
- Python+Appium新手教程
- 詳解使用python爬取抖音app視頻(appium可以操控手機(jī))
- Python實現(xiàn)Appium端口檢測與釋放的實現(xiàn)
- Python3+Appium安裝使用教程
- python爬蟲之Appium爬取手機(jī)App數(shù)據(jù)及模擬用戶手勢