一、前言
二、環境依賴
1、環境依賴項
- Xcode
- Git
- homebrew
- npm、nodejs
- libimobiledevice
- idevicesinstaller
- ios-deploy
- Carthage
- appium
- appium-doctor
- Webdriveragent
- ios-webkit-debug-proxy
- Python和Java
- Android SDK
2、環境需求與支持
|
需求
|
版本最低要求
|
我的環境版本
|
|
Mac OSX
|
10.11+
|
macOS 11.3.1
|
|
iOS
|
9.3+
|
13.3、14.7
|
|
Xcode
|
7+
|
12.5
|
|
Appium
|
1.6+
|
1.21.0
|
|
驅動程序
|
對應iOS版本
|
|
XCUITest Driver
|
ios9.3或以上
|
|
UIAutomation Driver
|
ios9.3以下
|
三、環境配置
1、xcode安裝
Xcode是運行在操作系統Mac OS X上的集成開發工具(IDE),iOS自動化測試使用Xcode主要用於將綁定了蘋果開發者證書的WebDriverAgent打包至iOS手機。
安裝方式有兩種,根據你的系統版本來選擇。
方式一:Mac平台的App Store安裝
通過App store安裝的Xcode是最新版本,需要最新版macOS系統才能兼容。如果已經升級至最新系統,可以直接在App store下載安裝。最好不要升級至最新系統,可能遇到其他兼容性問題。
方式二:離線包安裝
你的macOS系統不是最高版本的時候,要保證最低版本需求:macOS在10.12以上,xcode在8.1以上。
離線包下載地址:https://developer.apple.com/cn/support/xcode/ (可以選擇版本)
離線包的Xcode版本選擇,最好是根據你的系統版本發布時間來定,選發布時間相近的版本。我的版本是:macOS 11.3.1 、Xcode12.5
2、Git安裝
安裝的Xcode自帶Git程序,一般Xcode安裝好后不需要再單獨安裝Git,驗證Git環境即可。如果后面的環境依賴安裝出現關於Git的報錯,需要更新Git,或者卸載重新安裝。驗證安裝:git --version驗證git連接:ping github.com能夠連接成功時,終端顯示:
更新Git:brew upgrade git
3、Homebrew安裝(用brew來安裝依賴)
Homebrew是一款Mac OS平台下的軟件包管理工具,擁有安裝、卸載、更新、查看、搜索等很多實用的功能。簡單的一條指令,就可以實現包管理,而不用你關心各種依賴和文件路徑的情況,十分方便快捷。類似apt-get、yum。
安裝途徑有兩種:國外源和國內園,推薦使用國內源,我使用國外源沒成功過。
方式一(國外源):
在官網首頁復制下面的安裝命令,在終端執行命令安裝:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
驗證安裝:brew -v
更新Homebrew命令:brew update && brew upgrade && brew clean
方式二(國內源):
上面的官網安裝方法失敗率很高,可以采用國內源安裝。
homebrew國內源安裝方法,終端執行下面的命令:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
終端運行時,根據提示操作:

4、npm和nodejs安裝
Appium是通過Node.js開發的http服務器,用來創建和控制WebDriver的session,因此需要安裝Node.js。npm是Node.js的包管理工具,隨同Node.js一起安裝。
4.1、(方式一:brew在線安裝)【我的nodejs版本是:16.6.0】
安裝命令:brew install node 此方法安裝的是最新版本
驗證安裝:node -v 得到版本號
npm -v 得到版本號
其它在線安裝方法:(指定版本安裝)
終端執行命令行找到自己合適的node版本 :brew search node
查詢顯示最高可以安裝 node14 版本
安裝命令:brew install node@版本號 (會將npm和nodejs一起安裝)
綁定安裝的node,命令:brew link --overwrite --force node@版本號
驗證安裝:node -v 得到版本號
npm -v 得到版本號
卸載node:
brew uninstall node@版本號 --force
例如:安裝的是12.18.1,卸載命令:brew uninstall node@12 --force
4.2、(方式二:離線包安裝)
brew在線安裝是從官網下載,速度慢且成功率低,可以通過下載離線包安裝解決。
nodejs官網下載地址:https://nodejs.org/en/ 點擊“Current”區域穩定版。
安裝包下載並安裝后,同樣在終端中輸入node -v 、 npm -v 驗證
4.3、cnpm國內源安裝
NPM安裝插件是從NPM官網下載對應的插件包,該網站的服務器在國外,經常會出現下載緩慢或出現異常,這時便需要找到另外的方法提供穩定的下載,這個方法就是CNPM。阿里巴巴的淘寶團隊把NPM官網的插件都同步到了在中國的服務器,提供給我們從這個服務器上穩定下載資源。
CNPM同樣是NPM的一個插件,要安裝的話需要在終端執行以下命令:
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
驗證安裝:cnpm -v

4.4、npm安裝插件常見報錯
在終端通過npm安裝插件時,前面加上“sudo”可以減少報錯幾率。(加上sudo后,命令以系統管理者的身份執行)
如果通過npm安裝插件時,出現“npm ERR!”提示,表示安裝失敗。前綴加上sudo也報錯,可以嘗試國內源cnpm安裝,只需要將命令中的npm換成cnpm。
如果終端安裝過程中出現“npm WARN”提示,可以忽略。
5、libimobiledevice安裝
libimobiledevice是一個使用原生協議與蘋果IOS設備進行通信的庫,相當於Android的adb。appium連接iOS設備必需要此依賴庫,通過這個庫Mac os可輕松獲得iOS設備信息。支持iOS10以上系統
安裝命令:brew install --HEAD libimobiledevice
卸載:brew uninstall --ignore-dependencies libimobiledevice
常用命令:
1、idevice_id -l 顯示當前所連接的設備[udid],包括 usb、WiFi 連接
2、ideviceinfo 獲取設備信息
3、idevicedate 獲取設備時間
4、idevicename 獲取設備名稱
5、idevicescreenshot 截圖
6、ideviceinstaller -u [udid] -i [xxx.ipa] #xxx.ipa:安裝文件路徑
7、ideviceinstaller -u [udid] -U [bundleId] #bundleId:應用的包名
檢查安裝:
6、idevicesinstaller安裝
ideviceinstaller是一個管理連接設備的工具,與ios-deploy、Android的adb功能類似。
ideviceinstaller的功能與libimobiledevice差不多,都可以獲取iOS設備的udid、安裝App、卸載App、獲取bundleid等,但ideviceinstaller僅支持iOS9以下系統環境,libimobiledevice支持iOS10以上系統環境。
安裝命令:brew install ideviceinstaller
常用命令:
1.ideviceinstaller -l 打印app列表
7、ios-deploy安裝
ios-deploy是一個使用命令行安裝ios app到連接設備的工具
原理是根據os x命令行調用系統底層函數,獲取連接的設備、查詢/安裝/卸載app
iOS10以上系統使用appium,需要依賴ios-deploy
安裝:sudo npm install -g ios-deploy 或 sudo cnpm install -g ios-deploy
安裝指定版本的ios-deploy參考:https://www.jianshu.com/p/a100914ec784
ios-deploy常用命令:
1.ios-deploy -c 查看連接的設備(包括通過usb和wifi連接的)
2.ios-deploy -c --no-wifi 查看通過usb連接的設備
3.ios-deploy --id [udid] --bundle [xxx.app] 安裝應用到指定設備(其中xxx.app是Xcode編譯后的ipa的路徑)
4.ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] 卸載指定設備上的應用(根據包名,也就是bundleId)
5.ios-deploy --id [udid] --list_bundle_id 查看指定設備上安裝的所有應用(包括系統應用和第三方)
例如: ios-deploy --id 770dfe115807e7d494b4721b1e4ebd6ecb9424d3 --list_bundle_id
6.ios-deploy --id [udid] --exists --bundle_id [bundleId] 檢查指定設備上是否安裝了某個應用
例如: ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --exists --bundle_id com.facebook.taozhen
安裝錯誤解決參考:https://blog.csdn.net/weixin_44643020/article/details/88226097
8、Carthage安裝
Carthage是一款iOS項目依賴管理工具,與cocoapods功能相似,可以幫助管理第三方依賴,類似於Java的maven。它會把第三方依賴編譯成framework,以framework形式將第三方依賴加入到項目中進行使用和管理。自動化測試用到的WebDriverAgent通過Carthage管理項目依賴。
安裝命令:brew install carthage
檢查命令:carthage version
9、Appium安裝 【我安裝的appium版本:1.21.0】
appium安裝有兩種方式,命令行版本和桌面版本。
命令行版本appium打開速度快,可以開啟多設備的自動化測試,常用於執行腳本。
桌面版本appium打開速度慢,常用於輔助元素定位。
9.1、命令行版安裝
在appium官網(http://appium.io/)首頁中有安裝命令,直接復制至終端安裝。命令如下:
1 > brew install node # 獲取 node.js
2 > npm install -g appium # 獲取 appium
3 > npm install wd # 獲取 appium client
4 > appium & # 開啟 appium
5 > node your-appium-test.js
上面的命令安裝的是最新版本,如果要安裝指定版本,執行下面的命令。
指定版本安裝:
npm install -g appium@1.20.2 ---安裝的版本是appium1.20.2
如果使用npm安裝報錯,命令行前加上sudo執行:
sudo npm install -g appium
卸載安裝:
npm uninstall -g appium
檢查安裝:appium -v
9.1.1、官網安裝不成功,可以試一試淘寶鏡像源:
cnpm install -g appium
驗證安裝:appium -v
9.1.2、命令行打開appium
appium -a 127.0.0.1 -p4723 ---(默認端口4723可以任意修改,appium開啟后監聽端口是修改后的端口)
命令行參考:https://www.cnblogs.com/Dahlia/p/10516405.html
9.2、appium官網下載離線包安裝:http://appium.io/
10、appium-doctor環境檢查
appium-doctor命令,可用於檢查appium的相關環境是否配置成功。
安裝:sudo npm install -g appium-doctor
或者 sudo cnpm install -g appium-doctor
卸載:npm uninstall -g appium-doctor
檢查結果中沒有出現紅色的“X”時,表示iOS自動化測試所必需的依賴環境都安裝好了。
檢查結果中有黃色的“X”時(如上圖),表示非必需的環境依賴,可以暫時不管,等以后用到了這個模塊再去安裝。
10.2、Mac環境Android自動化測試環境檢查
終端執行命令appium-doctor --android,檢查Mac中通過appium對Android做自動化測試的環境。
上圖中紅色的“X”,表示Android自動化測試所必需的環境依賴,我最后再介紹這些依賴的安裝。
環境安裝走到這一步了,就可以對iOS模擬器進行自動化測試了。如果要連接控制iOS真機,還需要將webdriveragent構建至真機,Mac系統才能控制手機。
11、WebDriverAgent安裝
WebDriverAgent簡稱WDA,是由Facebook推出的一款移動端測試框架。它是在iOS客戶端實現了一個WebDriver的Server,借助這個server,可以遠程控制iOS設備進行測試。官網介紹Appium驅動真實設備的地址:http://appium.io/docs/en/drivers/ios-xcuitest-real-devices/
Appium與iOS手機進行通訊就是借助的WDA,配置WDA至iOS手機之前,需要通過Xcode將蘋果開發者證書編譯進WDA才會生效。這個編譯證書的過程是報錯幾率最高的步驟,我嘗試好幾次才找到最有效的方法。
11.1、申請蘋果開發者證書
蘋果開發者證書有免費和收費的,對於自動化測試來說免費版的就夠用了,只不過通過Xcodego構建編譯進WDA的證書只有7天有效期,7天后還需要重新構建一次。
免費版申請過程很簡單,可以參考:https://www.cnblogs.com/zdx20/p/15084391.html
11.2、WebDriverAgent目錄
WebDriverAgent有兩種來源,一種是從GitHub拉取,通過Xcode編譯證書后替換掉appium里面的WebDriverAgent;另一種是直接使用appium集成的WebDriverAgent,Xcode編譯證書后使用。
網絡資源一般介紹第一種的比較多,但是這種方法已經不適用於新版本的Appium和Xcode。從GitHub(地址:git clone https://github.com/facebook/WebDriverAgent.git)拉取的WebDriverAgent有很長時間沒有更新了,通過Xcode編譯證書時有很多兼容性問題。 如果選擇今年發布的Appium和Xcode,直接使用appium集成的WebDriverAgent基本不會報錯,我選擇的這種方式。想通過第一種方式可以參考:https://www.cnblogs.com/xiehong/p/14898938.html11.2.1、進入appium的WebDriverAgent目錄
-
桌面版appium的WDA路徑:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent
-
命令行版appium的WDA路徑:
/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent
在appium官方文檔中說明要執行下面的操作,具體起什么作用還不清楚,先按照步驟操作,以免后面報錯。
以桌面版的appium為例,終端進入appium-webdriveragent目錄,執行下面的命令:
mkdir -p Resources/WebDriverAgent.bundle
如果你安裝的appium版本在1.20以下,還需要執行下面這行命令:
./Scripts/bootstrap.sh -d
還是以桌面版的appium為例,在Mac桌面左上角點擊“前往”-->“前往文件夾”-->“輸入WDA路徑”-->點擊"前往",即可進入appium-webdriveragent目錄,找到“WebDriverAgent.xcodeproj”文件。

11.2.2、Xcode編譯證書
雙擊“WebDriverAgent.xcodeproj”文件通過Xcode打開,然后對“WebDriverAgentLib”、“WebDriverAgentRunner”兩個文件進行證書編譯修改。在Xcode編譯證書之前,需要先綁定申請過蘋果開發者賬號的Apple ID。進入Xcode的偏好設置后,按照下圖配置ID:

在Xcode頁面找到“WebDriverAgentLib”,將“Signing”里面的Bundle Identifier改成自己命名的(與iOS手機已安裝應用的bundleId要不一樣),然后分別將“Build Settings”、“Info”里面的Bundle Identifier改成和第一步“Signing”里面的一樣。如圖所示3處:

設置好后當“Signing”分頁出現“Signing Certificate Apple Development:xxxxxxxx”時表示證書編譯成功。
然后同樣的方法修改“WebDriverAgentRunner”里面的Bundle Identifier,注意此處的Bundle Identifier也是自己命名的。如下圖: 
Xcode選擇WebDriverAgentRunner連接的iOS手機:

此時所有的設置都完成了,開始“Product-->Test”構建WebDriverAgent至iOS手機:
第一次構建時會報錯,如下圖樣式,是因為構建至手機的WebDriverAgent需要信任該描述文件。手機設置路徑:設置-->通用-->設備管理-->選擇描述文件並信任

信任描述文件后,Xcode再次“Product-->Test”構建一次就會成功。手機里面會出現一個“WebDriverAgentRunner-Runner”,走到這一步就可以對iOS真機進行自動化測試了。

11.2.3、環境驗證-----轉發端口

1 { 2 "value" : { 3 "message" : "WebDriverAgent is ready to accept commands", 4 "state" : "success", 5 "os" : { 6 "testmanagerdVersion" : 28, 7 "name" : "iOS", 8 "sdkVersion" : "14.5", 9 "version" : "13.3" 10 }, 11 "ios" : { 12 "ip" : "192.168.3.18" 13 }, 14 "ready" : true, 15 "build" : { 16 "time" : "Aug 4 2021 10:13:40", 17 "productBundleIdentifier" : "com.facebook.WebDriverAgentRunner" 18 } 19 }, 20 "sessionId" : null # 這里顯示null我也不知為啥,但不影響使用 21 }
11.24、Appium啟動App
通過Appium啟動app,並使用inspector查找app的元素,在“Desired Capabilities”中輸入下面的預期參數即可。
1 { 2 "platformName": "iOS", 3 "automationName": "XCUITest", 4 "platformVersion": "iOS系統版本號", 5 "deviceName": "iOS手機名稱", 6 "bundleId": "被測試app的bundleId", 7 "udid": "iOS手機設備號", 8 "xcodeOrgId": "<Team ID>", 9 "xcodeSigningId": "iPhone Developer"
10 }



13、ios-webkit-debug-proxy安裝
在iOS手機上進行H5頁面的自動化測試,需要安裝ios-webkit-debug-proxy
命令:brew install ios-webkit-debug-proxy
重新安裝:brew reinstall ios-webkit-debug-proxy
安裝成功后,終端輸入下面的命令查看是否能正常調起ios-webkit-debug-proxy
ios_webkit_debug_proxy -c [設備udid]:27753 -d

14、Python安裝
Python官網下載地址:https://www.python.org/downloads/mac-osx/
Mac OSX自帶有Python2,安裝的是Python3時還需要更改環境變量,將Python3設為默認。
1.1、獲取Python3的安裝路徑
終端輸入命令:which python3
我的安裝路徑是:/Library/Frameworks/Python.framework/Versions/3.8/bin/python3
1.2、編輯 bash_profile 文件
終端輸入命令:sudo vim ~/.bash_profile
輸入Mac的登錄密碼后進入文本操作,輸入 i 轉為插入模式,寫入下面命令:
PATH="/Library/Frameworks/Python.framework/Versions/3.8/bin:${PATH}"
export PATH
alias python="/Library/Frameworks/Python.framework/Versions/3.8/bin/python3"
輸入完成后按“Esc”, 然后 ‘:’ 底線命令模式, 輸入 wq! 退出環境變量配置。
1.3、讀取和執行命令,使配置生效
終端輸入命令:source .bash_profile
1.4、requirements.txt / requests / lxml組件安裝
組件不裝可能會報錯,終端輸入命令:
pip3 install -r requirements.txt
pip3 install requests
pip3 install lxml
安裝參考:
https://post.smzdm.com/p/awx4qd2k/
https://www.cnblogs.com/hailin2018/p/13495790.html
環境變量生效問題:
https://www.cnblogs.com/coding8832/p/14406412.html
1.5、驗證
終端輸入:Python 展示安裝的Python的版本,即安裝成功

15、Java安裝
Java_Jdk下載地址:https://mirrors.huaweicloud.com/java/jdk/ 此鏈接為國內鏡像源。
我下載的版本為:jdk-8u202-macosx-x64.dmg
1.1、安裝與驗證
Mac OSX系統安裝很簡單,按步驟就行。
安裝好后在“系統偏好設置”中會有Java圖標,並且在終端中輸入“java -version”后,可以驗證安裝版本。

1.2、獲取安裝路徑
終端中使用“open + /路徑”可以打開目標文件夾。

在終端中輸入:open /Library/Java/JavaVirtualMachines/ 在訪達中可以開啟安裝目錄。
我的java1.8安裝路徑:/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
1.3、配置環境變量
1)終端輸入命令:sudo vim ~/.bash_profile
2)輸入Mac的登錄密碼后進入文本操作,輸入 i 轉為插入模式,寫入下面命令:
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_202.jdk/Contents/Home
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME
export PATH
3)按Esc退出編輯模式,進入命令行模式 :wq! 保存退出。
4)在終端輸入命令 source .bash_profile 來讀取和執行命令,使配置生效。
5)在終端輸入命令 echo $JAVA_HOME后顯示配置的home路徑,說明配置成功。

16、Android SDK
Android SDK下載地址:
國內源下載:http://tools.android-studio.org/index.php/sdk
官網下載:https://www.androiddevtools.cn
下載的包解壓后,在目錄中> tools > 執行腳本android 進行升級安裝:
環境變量配置:
1)終端輸入命令:sudo vim ~/.bash_profile
2)終端中獲取android-sdk-macosx目錄的路徑
我的路徑是:/Users/sinosun/Downloads/android-sdk-macosx
3)輸入Mac的登錄密碼后進入文本操作,輸入 i 轉為插入模式,輸入下面命令:
ANDROID_HOME=/Users/sinosun/AutoTestdat/android-sdk-macosx
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/29.0.3
export ANDROID_HOME
export PATH
4)按Esc退出編輯模式,進入命令行模式 :wq! 保存退出。
5)在終端輸入命令 source .bash_profile 來讀取和執行命令,使配置生效。
6)驗證 adb devices
此時,也可以在Mac中對Android手機進行自動化測試了。
終端中輸入:appium-doctor 驗證下iOS自動化、Android自動化測試環境的搭建是否還有問題。只要前面所有的步驟沒問題,基本不會出現環境問題。
