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


 

一、前言

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.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能夠連接成功時,終端顯示:

安裝命令:brew install git

更新Git:brew upgrade git

 

3、Homebrew安裝(用brew來安裝依賴)

Homebrew是一款Mac OS平台下的軟件包管理工具,擁有安裝、卸載、更新、查看、搜索等很多實用的功能。簡單的一條指令,就可以實現包管理,而不用你關心各種依賴和文件路徑的情況,十分方便快捷。類似apt-get、yum。

安裝途徑有兩種:國外源國內園,推薦使用國內源,我使用國外源沒成功過。

方式一(國外源):

官網:https://brew.sh/

在官網首頁復制下面的安裝命令,在終端執行命令安裝:

/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欄選擇版本號,
然后重新執行安裝命令。如下圖:
 
 
檢查安裝:

安裝錯誤解決參考: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

檢查環境配置命令:
appium-doctor
appium-doctor --ios
appium-doctor --android
安裝目錄:
/usr/local/lib/node_modules/appium-doctor
10.1、iOS自動化測試環境檢查
終端執行命令appium-doctor --ios后,即可開始檢查iOS自動化測試所需的appium環境。

檢查結果中沒有出現紅色的“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.html

    11.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、環境驗證-----轉發端口

構建WebDriverAgent至手機成功后,Xcode控制台就會打印出手機的ip和端口。

 

終端輸入: iproxy 8300 8100
-----------------該工具命令用於將手機的端口號映射到電腦上的某一個端口,其中8100是手機的端口,8300是映射至Mac電腦的端口
如果映射不成功,執行命令安裝:brew install usbmuxd
端口轉發成功后,在瀏覽器Safari中輸入本地地址+轉發端口:http://localhost:8300/status,得到類似下面的輸出即表示WebDriverAgent服務器狀態正常。
 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 }
免費版的蘋果開發者賬號,Team ID在構建WebDriverAgent的Xcode可以查看。申請的付費賬號,登錄 developer.apple.com/account查找Team ID。

12、iOS手機設置
    12.1、授權UI自動化測試
    iOS手機端進入設置 --> 開發者 --> 開啟“Enable UI Automation”

    12.2、Safari瀏覽器開啟遠程自動化
    iOS手機端進入設置 --> Safari瀏覽器 --> 頁面最下方“高級” --> 開啟“遠程自動化”

 

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

# 注意:在desired_capabilities參數中要加入:startIWDP: True
 
 

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自動化測試環境的搭建是否還有問題。只要前面所有的步驟沒問題,基本不會出現環境問題。

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM