一咳秉、安裝
我們知道selenium是桌面瀏覽器自動化操作工具(Web Browser Automation)
appium是繼承selenium自動化思想旨在使手機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
要想操作安卓手機需要Android SDK,所以在安裝appium之前先安裝Android SDK学赛。
推薦直接安裝Android Studio然后使用Android Studio安裝SDK(太慢可通過圖中HTTP Proxy設置代理)年堆。
菜單----Tools----SDK Manager,鉤選自己要安裝的版本點擊Apply進行下載即可盏浇。
Android SDK安裝完成后变丧,新建ANDROID_HOME環(huán)境變量,值為上圖Android SDK Location的目錄(我這里是“D:\Language\ASDK”)
1.2 通過Desktop App安裝(推薦)
下載地址:https://github.com/appium/appium-desktop/releases
選擇操作系統對應版本下載绢掰,Windows直接雙擊安裝即可痒蓬。
1.3 通過npm安裝
1.3.1 安裝nodejs
appium本質是一個nodejs庫所以要先安裝nodejs,然后使用npm安裝滴劲。
nodejs下載地址:https://nodejs.org/zh-cn/download/
下載zip包解壓到自己想放的目錄攻晒,然后把該目錄加入Path環(huán)境變量即可。
1.3.2 安裝appium
npm install -g appium
安裝appium的過程中安裝chromedriver時會連接google網站上去(報錯RequestError: Error: connect ETIMEDOUT 216.58.220.208:443)班挖,所以可能你需要參考以下命令設置一下npm代理
設置代理 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
查看當前配置項
npm config get
npm config get proxy
刪除代理配置 npm config delete proxy npm config delete https-proxy
配置本質上會存放到“C:\Users\你的用戶名.npmrc”內鲁捏,所以也可以直接修改該文件。
1.3.3 使用appinum-doctor確認環(huán)境配置無誤
npm install -g appium-doctor appium-doctor --android
二聪姿、手機連接appium
2.1 啟動appium服務
如果是通過npm安裝碴萧,appium會被安裝到nodejs目錄下乙嘀,直接使用appium命令啟動即可
我這里使用Desktop App方式安裝末购,安裝完成后雙擊桌面上的圖標界面如下:
我們使用默認配置都不修改,直接點擊“Start Server”按鈕啟動
2.2 手機使用數據線連接電腦
使用數據線把手機連接到開啟appium的電腦虎谢,開啟usb調試功能盟榴。可使用adb命令列出設備確保連接成功
adb devices -l
2.3獲取APP包名
打開CMD頁面使用:adb logcat -v time | findstr START
然后點擊所需要的APP
三婴噩、 使用示例
下邊以python3+appium打開微信并登錄進行演示擎场。python操作appium是通過向appnium的監(jiān)聽端口發(fā)報文實現的羽德,所以python不用安裝什么appium庫。
3.1 Desktop App打開微信并登錄
添加以下四項值迅办,完后點擊“Start Session”宅静。
platformName---設備平臺。填Android或IOS
deviceName----設備名站欺。按上邊adb查出的設備名填寫即可
appPackage----要啟動的app的包名姨夹。微信是"com.tencent.mm"
appActivity----要啟動的界面。微信啟動界面是".ui.LauncherUI"
{ "platformName": "Android", "deviceName": "HWEVA", "appPackage": "com.tencent.mm", "appActivity": ".ui.LauncherUI" }
選擇xml控件矾策,對應部份就會高亮顯示磷账。
點擊開始錄制,然后在該appium界面上操作(注意不是自己直接在手機上操作)贾虽,操作過程就會被記錄下來然后可輸出該過程對應的python代碼
操作過程就會被記錄下來逃糟,在Recorder下拉選擇語言即可輸出操作對應的代碼
3.2 全代碼自動化登錄實現
Desktop App已給出界面內操作的代碼,全代碼自動化主要的其實只是打開該界面的代碼蓬豁。
首先我們先安裝兩個依賴庫
pip install Appium-Python-Client Selenium
代碼補全如下绰咽,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服務監(jiān)聽地址 server='http://localhost:4723/wd/hub' # app啟動參數 desired_caps={ "platformName": "Android", "deviceName": "HWEVA", "appPackage": "com.tencent.mm", "appActivity": ".ui.LauncherUI" } # 驅動 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"))) # 點擊登錄按鈕 login_btn.click() # 獲取手機號文本框 phone_text = wait.until(EC.presence_of_element_located((By.ID,"com.tencent.mm:id/ji"))) # 填寫手機號文本框 phone_text.send_keys("18888888888")