iOS自動化測試:mac下iOS10 appium測試環境的搭建

概述

Appium是一個移動端的自動化框架,可用于測試原生應用,移動網頁應用和混合型應用,且是跨平臺的。可用于IOS和Android以及firefox的操作系統。原生的應用是指用android或ios的sdk編寫的應用,移動網頁應用是指網頁應用,類似于ios中safari應用或者Chrome應用或者類瀏覽器的應用。混合應用是指一種包裹webview的應用,原生應用于網頁內容交互性的應用。重要的是Appium是跨平臺的,何為跨平臺,意思就是可以針對不同的平臺用一套api來編寫測試用例。

iOS10后基于UIAutomation的測試框架已經蘋果更改為XCUITest測試框架了,從Appium1.6.3開始Appium也開始支持XCUITest了。由于時間原因,Appium1.6.3以前的測試環境搭建及其工具使用就不再說明,資料網上也是一大把。截止目前最新的是Appium1.6.5,下面介紹下環境搭建過程。

開發環境


系統:macOS Sierra (10.12.4)

開發工具:Xcode 8.3.2(iOS10.3.1)

環境搭建


開始搭建

1、 安裝homebrew:homebrew 簡稱brew,是Mac OSX上的軟件包管理工具,能在Mac中方便的安裝軟件或者卸載軟件,可以說Homebrew就是mac下的apt-get、yum等神器。

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

2、 安裝libimobiledevice:libimobiledevice 是一個跨平臺的軟件庫,支持 iPhone?, iPod Touch?, iPad? and Apple TV? 等設備的通訊協議。不依賴任何已有的私有庫,不需要越獄。應用軟件可以通過這個開發包輕松訪問設備的文件系統、獲取設備信息,備份和恢復設備,管理 SpringBoard 圖標,管理已安裝應用,獲取通訊錄、日程、備注和書簽等信息,使用 libgpod 同步音樂和視頻。

$ brew install libimobiledevice --HEAD

3、 安裝carthage:carthage 使用于 Swift 語言編寫,只支持動態框架,只支持 iOS8+的Cocoa依賴管理工具。

$ brew install carthage

4、安裝node:node是安裝npm的前置條件。

$ brew install node

5、安裝npm:npm是一個NodeJS包管理和分發工具,已經成為了非官方的發布Node模塊(包)的標準。

$ brew install npm

6、安裝cnpm:國內直接用npm下載安裝會有好多網絡問題,安裝淘寶的cnpm要比npm好用,https://npm.taobao.org/

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

7、安裝ios-deploy:ios-deploy是一個使用命令行安裝ios app到連接的設備的工具,原理是根據os x命令行工程調用系統底層函數,獲取連接的設備、查詢/安裝/卸載app。

$ cnpm install -g ios-deploy

8、安裝xcpretty: xcpretty是用于對xcodebuild的輸出進行格式化。并包含輸出report功能。

$ gem install xcpretty

9、安裝appium,appium-doctor

$ cnpm install -g appium

$ cnpm install -g appium-doctor

10、使用appium-doctor檢查appium環境

$ appium-doctor //appium-doctor --ios 只檢測iOS環境

info AppiumDoctor Appium Doctor v.1.4.2

info AppiumDoctor ### Diagnostic starting ###

info AppiumDoctor ?? The Node.js binary was found at: /usr/local/bin/node

info AppiumDoctor ?? Node version is 6.10.2

info AppiumDoctor ?? Xcode is installed at: /Applications/Xcode.app/Contents/Developer

info AppiumDoctor ?? Xcode Command Line Tools are installed.

info AppiumDoctor ?? DevToolsSecurity is enabled.

info AppiumDoctor ?? The Authorization DB is set up properly.

info AppiumDoctor ?? Carthage was found at: /usr/local/bin/carthage

info AppiumDoctor ?? HOME is set to: /Users/zhoutq

WARN AppiumDoctor ?? ANDROID_HOME is NOT set!

WARN AppiumDoctor ?? JAVA_HOME is NOT set!

WARN AppiumDoctor ?? adb could not be found because ANDROID_HOME is NOT set!

WARN AppiumDoctor ?? android could not be found because ANDROID_HOME is NOT set!

WARN AppiumDoctor ?? emulator could not be found because ANDROID_HOME is NOT set!

WARN AppiumDoctor ?? Bin directory for $JAVA_HOME is not set

info AppiumDoctor ### Diagnostic completed, 6 fixes needed. ###

info AppiumDoctor

info AppiumDoctor ### Manual Fixes Needed ###

info AppiumDoctor The configuration cannot be automatically fixed, please do the following first:

WARN AppiumDoctor - Manually configure ANDROID_HOME.

WARN AppiumDoctor - Manually configure JAVA_HOME.

WARN AppiumDoctor - Manually configure ANDROID_HOME and run appium-doctor again.

WARN AppiumDoctor - Add '$JAVA_HOME/bin' to your PATH environment

info AppiumDoctor ###

info AppiumDoctor

info AppiumDoctor Bye! Run appium-doctor again when all manual fixes have been applied!

info AppiumDoctor

環境常見問題解決:

? Xcode Command Line Tools are NOT installed!

$ xcode-select --install #按照提示安裝即可

WARN AppiumDoctor ? ANDROID_HOME is NOT set!

建議安裝AS,可以解決其他Android環境的其他問題Android Studio

設置 ANDROID_HOME 路徑

設置 JAVA_HOME 路徑

Mac OS X 下查看和設置JAVA_HOME

在.bash_profile/.zshrc文件中設置JAVA和Android環境變量

#android sdk

export ANDROID_HOME=~/Library/Android/sdk

export PATH="$HOME/.yarn/bin:$PATH"

#java_home

export JAVA_HOME=$(/usr/libexec/java_home)

export PATH=$JAVA_HOME/bin:$PATH

export CLASS_PATH=$JAVA_HOME/lib

以上都很簡單,下面重點來了。

11、appium服務端安裝:安裝appium-xcuitest-driver依賴,進入WebDriverAgent安裝目錄,運行bootstrap。

$ cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent (如果WebDriverAgent 所在路徑和此不同,請自行查找)

$ mkdir -p Resources/WebDriverAgent.bundle

$ sh ./Scripts/bootstrap.sh

11.1、用Xcode打開WebDriverAgent,并且編譯進入WebDriverAgent 文件夾,可用如下方法:

11.2、編譯WebDriverAgentLib

11.3、編譯WebDriverAgentRunner

若果編譯的過程中有語法錯誤,重新安裝第10步。

11.4、建立服務WebDriverAgent:進入WebDriverAgent 文件夾,建立服務。

$ cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

$ xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真機的udid' test

運行到最后會發現

而iphone多了一個WebDriverAgentRunner的app。手動啟動那個app的時候

原因是我們手機并并沒有信任這個apple id的開發者,到設置-通用-設備管理(描述文件) 信任你的apple id就可以了。再次運行上述命令,看到如下圖,就成功了,

12. 安裝appium client端:appium client有ruby,python,java三個版本,可自行選擇自己喜歡的安裝即可,這里只說Python版安裝,具體見下面查看資料3。

pip安裝

$ pip install Appium-Python-Client

如果安裝過程出現 could not create ‘/Library/Python/2.7/site-packages/appium’: Permission denied 錯誤,

使用 pip install Appium-Python-Client –user 命令可以安裝成功

源碼安裝 在Pipy上下載源碼安裝

$ tar -xvf Appium-Python-Client-X.X.tar.gz

$ cd Appium-Python-Client-X.X

$ python setup.py install


github安裝

$ git clone https://github.com/appium/python-client.git

$ cd python-client

$ python setup.py install

13、測試流程:

下載測試代碼并且測試,網上一個簡單的測試代碼:erduoniba/appium_ios_sample_code,自己寫可以參考Python + Appium+ IOS自動化測試

對于如何利用app-inspector獲取界面元素,請參考app-inspector官方文檔。

13.1、先啟動appium服務器:

$ appium -U xxxxxxx // xxxxx 真機設備ID

13.2、接下來連上真機 執行測試用例代碼:

$ cd sample-code/examples/python

$ python ios_simple_device.py

test_scroll (__main__.SimpleIOSTests) ... ok

----------------------------------------------------------------------

Ran 1 test in 30.421s

OK

踩過的坑


1、1 - 10步安裝過程中的權限問題:chmod -R 777 pathForFile,然后重新運行該命令。

2、第11.4步我在安裝的時候一直沒有Listening on USB這一行信息,不過服務正常可以使用。

3、在測試過程中一直提示第11.4步第一個圖的錯誤的話,拔數據線,關測試機,重啟,重插。


參考資料


1、Appium在 MAC 上搭建 appium1.6.3 過程:https://testerhome.com/topics/6962

2、appium1-macOS10.12下如何絲滑的使用appium?:http://www.lxweimin.com/p/05943804c25e

3、Appiumappium + iOS10.2 + Xcode8.2.1 + React Native 完成自動化測試:https://testerhome.com/topics/7775

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內容