IOS自動化測試環境搭建(Python & Java)

執燈行發表於2021-08-04
 
  

一、前言

IOS的App自動化測試與Android的一樣,也可以用appium來進行。但是IOS自動化依賴蘋果的osx系統、Xcode構建等,且封閉的系統需要蘋果開發者賬號才可以驅動真機。Appium的環境配置有點麻煩,可能大部分時間都在處理各種稀奇古怪的報錯,甚至於需要重灌系統。
本文旨在記錄配置過程(MacOS系統的Python和Java環境配置也有記錄),給同道中人提供參考,讓大家少走彎路。

二、環境依賴

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.20.2

 

驅動程式
對應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
能夠連線成功時,終端顯示:
安裝命令:brew install git
更新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)"

終端執行時,根據提示操作:

安裝結束後重啟終端 或者 執行 source /Users/sinosun/.bash_profile 否則可能無法使用。
終端執行:brew update 保持最新版
最後驗證安裝:brew -v 得到版本號
參考連結:
https://blog.csdn.net/ljl6158999/article/details/118144440 (macOS升級後安裝報錯解決辦法)

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

注意:Xcode是通過離線包安裝的,安裝ios-deploy時會報錯:
這個是由於Xcode沒有設定版本的原因導致的,設定方法:進入Xcode偏好設定-->點選locations-->Comand Line Tools欄選擇版本號,
然後重新執行安裝命令。如下圖:
 
 
檢查安裝:
 

8、Carthage安裝

Carthage是一款iOS專案依賴管理工具,與cocoapods功能相似,可以幫助管理第三方依賴,類似於Java的maven。它會把第三方依賴編譯成framework,以framework形式將第三方依賴加入到專案中進行使用和管理。自動化測試用到的WebDriverAgent通過Carthage管理專案依賴。
安裝命令:brew install carthage
檢查命令:carthage version
 
 
 
 

未完待續…… 

 
 
 
 
 
 

相關文章