iOS+appium自動化測試環境搭建

備註: wendriveragent作爲appium和ios設備的中間通信的橋樑,安裝實現有很多細節問題,會踩一些坑

 

安裝環境目錄(親測可以運行成功):

1.xcode安裝(建議mac系統在10.12以上,xcode在8.1以上,避免低版本影響)

2.開發者證書(可以使用免費)

3.homebrew安裝(用brew來安裝依賴)

4.git安裝

5.npm和nodejs、cnpm安裝(appium需要node環境,用cnpm或者npm來安裝依賴)

6.libimobiledevice的安裝(這是類似安卓的adb的工具,連接設備)

7.ios-deploy安裝(ios10以上需要安裝來連接設備)

8.idevicesinstaller安裝(iOS9一下的的類似安卓adb的工具,安裝、卸載)

9.Carthage安裝 (類似maven一樣管理依賴,WebdriverAgent編譯需要安裝依賴)

10.appium-命令行或者桌面版安裝

11.appium-doctor安裝(用於檢查appium的相關環境是否配置成功)

12.java+sdk安裝,並配置環境變量

13.webdriveragent安裝(安裝一個webdriveragentrunner來通信驅動iOS設備)

14.啓動appium

15.安裝ios-webkit-debug-proxy (iOS的H5測試)

 

 

1.xcode安裝(建議mac系統在10.12以上,xcode在8.1以上,避免版本影響)

 

2.開發者證書(可以使用免費)--具體申請,百度搜索

http://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/2_device_connection/4_ios_connection.html

 

3.homebrew安裝(用brew來安裝依賴)

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

brew update可以使用這更新

4.git安裝

brew install git

 

5.npm和nodejs、cnpm安裝(appium需要node環境,用cnpm或者npm來安裝依賴)

brew install node

sudo npm install -g cnpm --registry=https://registry.npm.taobao.org 安裝cnpm

檢查是否安裝成功

node -v

npm -v

cnpm -v

 

6.libimobiledevice的安裝(這是類似安卓的adb的工具,連接設備)

brew install --HEAD libimobiledevice (安裝build失敗 Xcode版本太老了,最好升級到xcode10.1)

1、打印app列表 ideviceinstaller -l

2、查看當前已連接的設備的UUID idevice_id -l

3、獲取設備信息 ideviceinfo

4、獲取設備時間 idevicedate

5、重啓設備 idevicediagnostics restart

6、安裝ipa包,卸載應用 ideviceinstaller -i xxx.ipa

//命令安裝一個ipa文件到手機上,如果是企業簽名的,非越獄機器也可以直接安裝了。

ideviceinstaller -U [bundleID]

//命令卸載應用,需要知道此應用的bundleID

        8、截圖 idevicescreenshot

 

7.ios-deploy安裝(ios10以上需要安裝來連接設備)

cnpm install -g ios-deploy

2. ios-deploy常用命令

2.1 查看連接的設備(包括通過usb和wifi連接的)

ios-deploy -c

2.2 查看通過usb連接的設備

ios-deploy -c --no-wifi

2.3 安裝應用到指定設備(其中xxx.app是Xcode編譯後的ipa的路徑)

ios-deploy --id [udid] --bundle [xxx.app]

2.4 卸載指定設備上的應用(根據包名,也就是bundleId)

ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId]

2.5 查看指定設備上安裝的所有應用(包括系統應用和第三方)

ios-deploy --id [udid] --list_bundle_id

如 ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --list_bundle_id

2.6 檢查指定設備上是否安裝了某個應用

ios-deploy --id [udid] --exists --bundle_id

如 ios-deploy --id 0420781d4e43f1f99935513c91e9b816f4dddc24 --exists --bundle_id com.facebook.wda.integrationApp.taozhen

 

8.idevicesinstaller安裝(iOS9一下的的類似安卓adb的工具,安裝、卸載)

brew install ideviceinstaller

 

9.Carthage安裝 (類似maven一樣管理依賴)

brew install carthage

檢查命令

carthage version

 

10.appium-命令行或者桌面版安裝

http://appium.io/ 官網下載

開啓打開這個鏈接 http://127.0.0.1:4723

 

11.appium-doctor安裝(用於檢查appium的相關環境是否配置成功)

sudo npm install appium-doctor -g 或者

sudo cnpm install -g appium-doctor

安裝的地址存放:

link /usr/local/bin/appium-doctor@ -> /usr/local/lib/node_modules/appium-doctor/appium-doctor.js

檢查 命令

appium-doctor

appium-doctor --ios

appium-doctor --android

 

12.java+sdk安裝,並配置環境變量

百度下載安裝jdk和sdk

 

13.webdriveragent安裝(安裝一個webdriveragentrunner來通信驅動iOS設備)

第一步:git clone https://github.com/facebook/WebDriverAgent.git

第二步:brew install Carthage

mkdir -p Resources/WebDriverAgent.bundle # 不知道爲啥要加這步,先加着

第三步:./Scripts/bootstrap.sh

webdriveragent編譯構建

WebDriverAgentLib、WebDriverAgentRunner、products下的integrationApp這三個都要設置開發者證書,並且bundleid修改

編譯成功後,會在手機上有一個webdriveragent的一個app信任就可以使用了

安裝編譯好後,需要把appium 下的webdriveragent項目替換

路徑 /Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver

注意:

下載的appium桌面版本自帶的webdriveragent路徑在這個路徑下

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent

也可以直接用appium自帶的webdriveragent(不用./Scripts/bootstrap.sh,直接WebDriverAgentLib、WebDriverAgentRunner、products下的integrationApp這三個都要設置開發者證書,並且bundleid修改)

參考:

https://www.jianshu.com/p/81899f2b64b0

https://www.jianshu.com/p/bf1ca3d4ac76

https://www.jianshu.com/p/568e1f4b152a

編譯WebdriverAgentRunner ----> 這時候控制檯就會打印出手機的ip和端口

⇒ ios10以下版本可以直接用瀏覽器訪問 ip+status/查看狀態:

例如:http://10.0.0.1:8100/status

⇒ ios10以上版本需要通過mac轉發一下再去訪問

proxy 8300 8100   #開啓iproxy 進行端口轉發

瀏覽器中輸入:http://localhost:8300 ,出現遺傳json字符串即可。

iproxy 8100 8100

http://localhost:8100/status

http://localhost:8100/inspector

測試的時候,手機不鏈接wifi的話,直接就可以打開ip:端口 ,不用轉發

證書衝突的話,將BuildSettings裏的code singing identity設置成iPhone Develpoer,解決

 

 

14.啓動appium

desired_capabilities={

# 'app': app,

'platformName': 'iOS',

'platformVersion': '11.4.1',

'deviceName': '陶振的iphone', # 陶振的iphone

'bundleId': 'com.facebook.wda.integrationApp.taozhen', # com.renren-inc.nuomi com.facebook.wda.integrationApp.taozhen

'udid': '0420781d4e43f1f99935513c91e9b816f4dddc24',

'automationName': 'XCUITest',

"xcodeOrgId": "10位開發者賬號teamid", # 10位開發者賬號teamid #

"xcodeSigningId": "iPhone Developer"

}

xcodeOrgId(teamId)獲取 security find-identity -v -p codesigning

xcodeOrgId(teamId) 在安裝webdriveragent的時候可以看到

https://www.jianshu.com/p/b5bc45362fa0

 

 

15.安裝ios-webkit-debug-proxy (iOS的H5測試)

在做iOS的h5頁面的時候,肯定會需要去做webview調試來進行代碼調試,而iOS webview調試需要區分真機和模擬器,因爲具體的實現原理不一樣的,模擬器使用 remote debugger,可以直接通過safari遠程調試,而真機使用 ios-webkit-debugger-proxy去遠程調試的。

注意,測試包必須要使用develop證書打包,纔可以進行真機調試。

通過如下命令進行安裝

brew install ios-webkit-debug-proxy

安裝之後運行如下命令查看是否能夠調起ios-webkit-debug-proxy

ios_webkit_debug_proxy -c XXXXXXXXXX:27753 -d XXXXXXXXXX表示設備UDID

運行上述命令發現報錯如下:

Could not connect to lockdownd. Exiting.: Permission denied

通過查找資料,發現網上大部分的解決方案是執行如下命令:

sudo chmod -R 777 /var/db/lockdown/

appium如何啓動ios-webkit-debug-proxy

發現ios-webkit-debug-proxy可以通過設置DesiredCapabilities來調起,代碼如下:

cap.setCapability(“startIWDP”,true);

 

遇到問題:

1. appium-doctor 檢查異常

appium-doctor

/usr/local/lib/node_modules/appium-doctor/build/lib/general.js:59

} catch {

SyntaxError: Unexpected token {

檢查對應general代碼,看代碼意思是node版本不能低於10

升級node

brew upgrade node

如果更新brew卡住,更換brew源

替換brew.git:

cd "$(brew --repo)"

git remote set-url origin https://mirrors.ustc.edu.cn/brew.git

給 /usr/local賦予修改權限

sudo chown -R $(whoami) /usr/local

brew link --overwrite node 重寫link

brew link node 鏈接link

node地址

/usr/local/Cellar/node/13.7.0

編譯項目

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

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=3825bba08e5c10c499ddaf0276bac01983ab7119' test

 

http://localhost:8100/status

http://localhost:8100/inspector

問題1:

webdriveragent運行test,出的log裏的鏈接不成功 訪問不到的話,嘗試用 iproxy 8100 8100 (轉發之後http://127.0.0.1:8100/status 這個鏈接可以打開) 但是運行appium會提示8100端口號被佔用

webdriveragent使用iproxy 8100 8100代理後,啓動appium,提示端口8100被佔用

An unknown server-side error occurred while processing the command. Original error: The port #8100 is occupied by an other process. You can either quit that process or select another free port.

⇒ ios10以下版本可以直接用瀏覽器訪問 ip+status/查看狀態:

例如:http://10.0.0.1:8100/status

⇒ ios10以上版本需要通過mac轉發一下再去訪問

http://127.0.0.1:8100/status如果打開沒有json,啓動appium就會有這個失敗,但是使用了ipoxy 8100 8100後,使用appium又會提示8100端口號被佔用???天吶

答:不要用wifi,直接用4G ,就不用轉發

問題2

Unable to launch WebDriverAgent because of xcodebuild failure: xcodebuild failed with code 65 xcodebuild error message

出現這個問題的時候,一般是webdriveragentRunner test失敗後了,強行起appium服務就會有這個錯誤,同問題3

這個是鏈接json都沒還通 ,肯定起不來

問題3:

WebDriverAgentRunner.xctest/WebDriverAgentRunner (0x102390530). One of the two will be used. Which one is undefined.

這個問題,就重新鏈接xcode、手機插拔,重新編譯webdriveragent一遍就好了,沒有特別操作,不知道爲啥發生

斷掉wifi,不然算鏈接了兩個手機 ios-deploy -c

問題4:

webdriveragentrunner 構建成功,但是test 失敗

https://testerhome.com/topics/16950

問題5:

對於一個未知問題的說明:

在使用Appium的過程中我們會遇到一些未知問題,通過網絡查找可能會需要補充以下兩對Desired Capabiities:

{ "xcodeOrgId": "<Team ID>", "xcodeSigningId": "iPhone Developer" }

caps["app"] = "http://appium.s3.amazonaws.com/TestApp7.1.app.zip"

開發者賬號的teamid如何查看

security find-identity -v -p codesigning

問題6:

Original error: 'bundleId' desired capability not provided

答:原因是appium自帶的webdriveragent沒有正確替換,網上教程說的appium自帶的路徑在

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-xcuitest-driver

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/

其實我下載的appium桌面版本V1.15.1版本自帶的webdriveragent路徑在這個路徑下

/Applications/Appium.app/Contents/Resources/app/node_modules/appium-webdriveragent

直接替換或者直接用appium自帶的webdriveragent就可以了

https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章