Appium是一個自動化測試開源工具,支持iOS平臺和Android平臺上的原生應用,web應用和混合應用。Appium是一個跨平臺的工具:它允許測試人員在不同的平臺(iOS,Android)使用同一套API來寫自動化測試腳本,這樣大大增加了iOS和Android測試套件間代碼的復用性。
1. 移動原生應用:用iOS或者Android SDK寫的應用。
2. 移動web應用:使用移動瀏覽器訪問的應用(Appium支持iOS上的Safari和Android上的Chrome)。
3. 混合應用:指原生代碼封裝網頁視圖,原生代碼和web內容交互。
Appium 的理念
- 無須為了自動化而重新編譯或修改測試APP
- 不讓移動端自動化測試限定在某種語言和某個具體的框架,任何人都可以使用自己最熟悉的最順手的語言及框架來做移動端自動化測試
- 無須為了移動端自動化測試而重新發明輪子,即重新寫一套API,webdriver協議里的api已經夠好,可以拿來改進使用
- 移動端自動化測試是開源的
Appium 設計思想
1. 無須為了自動化而重新編譯或修改測試APP
為了滿足Appium理念的第一條,Appium真正的工作引擎其實是第三方自動化框架。因此,不需在APP中植入Appium相關或者第三方的代碼,即測試使用的應用與最終發布的應用并無區別。 使用的第三方框架:
- iOS:蘋果的 UIAutomation
- Android 4.2+:Google's UIAutomator
- Android 2.3+:Google’s Instrumentation(Instrumentation由單獨的項目Selendroid提供支持)
2. 不讓移動端自動化測試限定在某種語言和某個具體框架中
為了滿足Appium理念的第二條,Appium選擇了client-server的設計模式。只要Client能夠發送HTTP請求給Server,那么Client使用什么語言來實現都是可以的,Appium把第三方框架封裝成一套API,指定客戶端到服務器端的協議。目前已經實現了大多數流行語言版本的客戶端,可是使用任何測試套件或者測試框架。
3. 不發明新的API
Appium擴展了webdriver的協議,沒有自己重新去實現一套,好處是以前的webdriver api能夠直接被繼承過來,以前的webdriver各種語言的binding都可以拿來就用,省去為每種語言開發一個client的工作量。
4. 開源
這個不多說了
Appium 概念
C/S架構
Appium的核心是一個web服務器,它提供了一套REST的接口。并監聽一個端口,接收由Client發送來的Command;翻譯這些Command,把這些Command轉成設備可以理解的形式發送給移動設備;移動設備執行完這些Command后把執行結果返回給Server;Server再把執行結果返回給Client。
這里的Client其實就是發起Command的設備,也就是執行Appium測試代碼的機器。也可以吧Client理解成是代碼,這些代碼可以是java/ruby/python/js,只要實現了webdriver標準協議就可以。
Session
在webdriver/appium中,所有的工作都是在session start后才可以進行,即通過POST/session這個URL,然后傳入 Desired Capabilities就可以開啟session。
開啟session后,返回一個全局唯一session id,以后幾乎所有請求都必須帶上這個session id,它代表你所打開的瀏覽器或者移動設備的模擬器。
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設計的,client庫是對原生webdriver進行的移動端擴展,加入一些方便的方法,比如swipe等。
Appium+Mac環境搭建
Appium安裝方式主要有兩種:
(1)自己安裝配置nodejs的環境,通過npm進行appium的安裝
(2)直接下載官網提供的dmg安裝,dmg里面已經有nodejs環境和appium的可執行文件了
本文主要講解直接使用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
三種方式,關系到Android-SDK的路徑,也關系到環境變量的配置
- 從官網上下載的SDK,并通過拖拽圖標到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. 設置環境變量
- 找到
~/.bash_profile
(桌面空白位置使用快捷鍵shift+comd+G或終端命令行定位) - 找到.bash_profile 文件,若沒找到,則先創建,創建命令如下:
touch .bash_profile
- 進行修改:
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,點擊右邊第二個圖標進行安裝檢測
參考資料
Appium API文檔
Appium簡明教程
Appium的安裝-Mac平臺
Mac上安裝Appium詳細步驟
Appium for Mac環境準備篇
Appium Girls 學習指南