Appium是一個自動化測試開源工具具篇,支持iOS平臺和Android平臺上的原生應(yīng)用内列,web應(yīng)用和混合應(yīng)用。Appium是一個跨平臺的工具:它允許測試人員在不同的平臺(iOS,Android)使用同一套API來寫自動化測試腳本概行,這樣大大增加了iOS和Android測試套件間代碼的復(fù)用性。
1. 移動原生應(yīng)用:用iOS或者Android SDK寫的應(yīng)用弧岳。
2. 移動web應(yīng)用:使用移動瀏覽器訪問的應(yīng)用(Appium支持iOS上的Safari和Android上的Chrome)凳忙。
3. 混合應(yīng)用:指原生代碼封裝網(wǎng)頁視圖,原生代碼和web內(nèi)容交互禽炬。
Appium 的理念
- 無須為了自動化而重新編譯或修改測試APP
- 不讓移動端自動化測試限定在某種語言和某個具體的框架涧卵,任何人都可以使用自己最熟悉的最順手的語言及框架來做移動端自動化測試
- 無須為了移動端自動化測試而重新發(fā)明輪子,即重新寫一套API腹尖,webdriver協(xié)議里的api已經(jīng)夠好柳恐,可以拿來改進(jìn)使用
- 移動端自動化測試是開源的
Appium 設(shè)計思想
1. 無須為了自動化而重新編譯或修改測試APP
為了滿足Appium理念的第一條,Appium真正的工作引擎其實是第三方自動化框架热幔。因此乐设,不需在APP中植入Appium相關(guān)或者第三方的代碼,即測試使用的應(yīng)用與最終發(fā)布的應(yīng)用并無區(qū)別绎巨。 使用的第三方框架:
- iOS:蘋果的 UIAutomation
- Android 4.2+:Google's UIAutomator
- Android 2.3+:Google’s Instrumentation(Instrumentation由單獨的項目Selendroid提供支持)
2. 不讓移動端自動化測試限定在某種語言和某個具體框架中
為了滿足Appium理念的第二條近尚,Appium選擇了client-server的設(shè)計模式。只要Client能夠發(fā)送HTTP請求給Server场勤,那么Client使用什么語言來實現(xiàn)都是可以的戈锻,Appium把第三方框架封裝成一套API歼跟,指定客戶端到服務(wù)器端的協(xié)議。目前已經(jīng)實現(xiàn)了大多數(shù)流行語言版本的客戶端格遭,可是使用任何測試套件或者測試框架哈街。
3. 不發(fā)明新的API
Appium擴展了webdriver的協(xié)議,沒有自己重新去實現(xiàn)一套如庭,好處是以前的webdriver api能夠直接被繼承過來叹卷,以前的webdriver各種語言的binding都可以拿來就用,省去為每種語言開發(fā)一個client的工作量坪它。
4. 開源
這個不多說了
Appium 概念
C/S架構(gòu)
Appium的核心是一個web服務(wù)器骤竹,它提供了一套REST的接口。并監(jiān)聽一個端口往毡,接收由Client發(fā)送來的Command蒙揣;翻譯這些Command,把這些Command轉(zhuǎn)成設(shè)備可以理解的形式發(fā)送給移動設(shè)備开瞭;移動設(shè)備執(zhí)行完這些Command后把執(zhí)行結(jié)果返回給Server懒震;Server再把執(zhí)行結(jié)果返回給Client。
這里的Client其實就是發(fā)起Command的設(shè)備嗤详,也就是執(zhí)行Appium測試代碼的機器个扰。也可以吧Client理解成是代碼,這些代碼可以是java/ruby/python/js葱色,只要實現(xiàn)了webdriver標(biāo)準(zhǔn)協(xié)議就可以递宅。
Session
在webdriver/appium中,所有的工作都是在session start后才可以進(jìn)行苍狰,即通過POST/session這個URL办龄,然后傳入 Desired Capabilities就可以開啟session。
開啟session后淋昭,返回一個全局唯一session id缚忧,以后幾乎所有請求都必須帶上這個session id忙迁,它代表你所打開的瀏覽器或者移動設(shè)備的模擬器。
Desired Capabilities
Desired Capabilities攜帶了一些配置信息。形式是key-value衡招,實際上Desired Capabilities在傳輸時就是json對象寞埠。他的作用是告訴Server本次測試的上下文掌眠,例如豌研,是測試ios還是android,具體測哪一個app贬丛。
Appium Server
在命令行用appium命令打開的東西撩银。
Appium Clients
Appium官方提供一套appium client,涵蓋多種語言豺憔,測試時额获,只用這些client庫替代原生webdriver庫够庙,原生webdriver api是為web設(shè)計的,client庫是對原生webdriver進(jìn)行的移動端擴展抄邀,加入一些方便的方法耘眨,比如swipe等。
Appium+Mac環(huán)境搭建
Appium安裝方式主要有兩種:
(1)自己安裝配置nodejs的環(huán)境境肾,通過npm進(jìn)行appium的安裝
(2)直接下載官網(wǎng)提供的dmg安裝剔难,dmg里面已經(jīng)有nodejs環(huán)境和appium的可執(zhí)行文件了
本文主要講解直接使用dmg的安裝方法,并在其過程中遇到的問題奥喻,想要了解第一種方法可見我的參考資料中的文章偶宫。
1. Java
java -version
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
2. git
git --version
git version 2.11.0 (Apple Git-81)
3. brew
brew -v
Homebrew 1.2.3
Homebrew/homebrew-core (git revision 7a8bf; last commit 2017-06-14)
4. node
brew install node
5. Android SDK
三種方式,關(guān)系到Android-SDK的路徑环鲤,也關(guān)系到環(huán)境變量的配置
- 從官網(wǎng)上下載的SDK纯趋,并通過拖拽圖標(biāo)到Application文件夾中:
SDK路徑:/Applications/ADT/sdk
- 使用Homebrew下載:
SDK路徑:/usr/local/Cellar/android-sdk/{YOUR_SDK_VERSION_NUMBER}
- 安裝Android Studio時自動下載SDK:
SDK路徑:/Users/{YOUR_USER_NAME}/Library/Android/sdk
6. 設(shè)置環(huán)境變量
- 找到
~/.bash_profile
(桌面空白位置使用快捷鍵shift+comd+G或終端命令行定位) - 找到.bash_profile 文件,若沒找到冷离,則先創(chuàng)建吵冒,創(chuàng)建命令如下:
touch .bash_profile
- 進(jìn)行修改:
vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=[YOUR_ANDROID_SDK_PATH]
- 生效:
source ~/.bash_profile
7. 下載Appium的dmg安裝包
Appium的dmg安裝包的下載地址是:https://github.com/appium/appium-desktop/releases/tag/v1.6.2
8. 驗證Appium是否安裝成功
從Launcher中打開Appium,點擊右邊第二個圖標(biāo)進(jìn)行安裝檢測
參考資料
Appium API文檔
Appium簡明教程
Appium的安裝-Mac平臺
Mac上安裝Appium詳細(xì)步驟
Appium for Mac環(huán)境準(zhǔn)備篇
Appium Girls 學(xué)習(xí)指南