Appium:簡介+環(huán)境搭建


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 的理念

  1. 無須為了自動化而重新編譯或修改測試APP
  2. 不讓移動端自動化測試限定在某種語言和某個具體的框架涧卵,任何人都可以使用自己最熟悉的最順手的語言及框架來做移動端自動化測試
  3. 無須為了移動端自動化測試而重新發(fā)明輪子,即重新寫一套API腹尖,webdriver協(xié)議里的api已經(jīng)夠好柳恐,可以拿來改進(jìn)使用
  4. 移動端自動化測試是開源的

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)境變量的配置

  1. 從官網(wǎng)上下載的SDK纯趋,并通過拖拽圖標(biāo)到Application文件夾中:
    SDK路徑:/Applications/ADT/sdk
  2. 使用Homebrew下載:
    SDK路徑:/usr/local/Cellar/android-sdk/{YOUR_SDK_VERSION_NUMBER}
  3. 安裝Android Studio時自動下載SDK:
    SDK路徑:/Users/{YOUR_USER_NAME}/Library/Android/sdk
6. 設(shè)置環(huán)境變量
  1. 找到 ~/.bash_profile(桌面空白位置使用快捷鍵shift+comd+G或終端命令行定位)
  2. 找到.bash_profile 文件,若沒找到冷离,則先創(chuàng)建吵冒,創(chuàng)建命令如下:
    touch .bash_profile
  3. 進(jìn)行修改: vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
export ANDROID_HOME=[YOUR_ANDROID_SDK_PATH]
  1. 生效: 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í)指南

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末西剥,一起剝皮案震驚了整個濱河市痹栖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞭空,老刑警劉巖揪阿,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異匙铡,居然都是意外死亡图甜,警方通過查閱死者的電腦和手機碍粥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門鳖眼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人嚼摩,你說我怎么就攤上這事钦讳。” “怎么了枕面?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵愿卒,是天一觀的道長。 經(jīng)常有香客問我潮秘,道長琼开,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任枕荞,我火速辦了婚禮柜候,結(jié)果婚禮上搞动,老公的妹妹穿的比我還像新娘。我一直安慰自己渣刷,他們只是感情好鹦肿,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著辅柴,像睡著了一般箩溃。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上碌嘀,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天涣旨,我揣著相機與錄音,去河邊找鬼股冗。 笑死开泽,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的魁瞪。 我是一名探鬼主播穆律,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼导俘!你這毒婦竟也來了峦耘?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤旅薄,失蹤者是張志新(化名)和其女友劉穎辅髓,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體少梁,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡洛口,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凯沪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片第焰。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖妨马,靈堂內(nèi)的尸體忽然破棺而出挺举,到底是詐尸還是另有隱情,我是刑警寧澤烘跺,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布湘纵,位于F島的核電站,受9級特大地震影響滤淳,放射性物質(zhì)發(fā)生泄漏梧喷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铺敌。 院中可真熱鬧绊困,春花似錦、人聲如沸适刀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽笔喉。三九已至取视,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間常挚,已是汗流浹背作谭。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留奄毡,地道東北人折欠。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像吼过,于是被迫代替她去往敵國和親锐秦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

推薦閱讀更多精彩內(nèi)容