關(guān)于Appium for IOS
Appium是目前最主流的app自動(dòng)化測(cè)試技術(shù),能夠同時(shí)支持IOS、Android平臺(tái)上的移動(dòng)應(yīng)用自動(dòng)化測(cè)試,能支持眾多語(yǔ)言,包括:Java、Python、Ruby、JavaScript等;并且Appium是開(kāi)源免費(fèi)使用的。
目前網(wǎng)上的關(guān)于Appium的學(xué)習(xí)教程絕大多數(shù)以Android為主,關(guān)于IOS端的比較少,而且很多教程年久失修,已經(jīng)不再適用于目前的Appium版本了。希望能通過(guò)這篇文章解決大家的IOS App自動(dòng)化環(huán)境搭建的問(wèn)題。
關(guān)于WebDriverAgent
WebDriverAgent是Facebook開(kāi)發(fā)的IOS端自動(dòng)化測(cè)試工具,在Github上開(kāi)源:?
https://github.com/facebookarchive/WebDriverAgent
Appium項(xiàng)目采用WebDriverAgent作為IOS端App自動(dòng)化的引擎(類似于Android平臺(tái)上的UIAutomator作用),WebDriverAgent通過(guò)在IOS端實(shí)現(xiàn)了WebDriver協(xié)議能夠遠(yuǎn)程控制IOS設(shè)備,通過(guò)它能夠進(jìn)行啟動(dòng)、殺死應(yīng)用,點(diǎn)擊或者滾動(dòng)等操作。
WebDriver協(xié)議
-
WebDriver是一套基于HTTP協(xié)議的JSON格式規(guī)范,因?yàn)锳ndroid、IOS、web網(wǎng)頁(yè)端都有自己的UI操作實(shí)現(xiàn)邏輯,所以需要統(tǒng)一的規(guī)范能夠?qū)@些平臺(tái)進(jìn)行操作來(lái)屏蔽平臺(tái)的差異。通過(guò)WebDriverAgent我們可以通過(guò)相同的API來(lái)對(duì)這些平臺(tái)進(jìn)行自動(dòng)化操作,比如我們熟悉的Selenium、Appium都是實(shí)現(xiàn)了WebDriver協(xié)議。
在Appium和IOS系統(tǒng)迭代發(fā)展過(guò)程中,Appium并不是一直使用WebDriverAgent作為IOS端的自動(dòng)化測(cè)試引擎。
-
在IOS 9之前使用UIAutomation作為自動(dòng)化引擎,該引擎有許多缺陷,比如只能在單臺(tái)Mac電腦上測(cè)試單臺(tái)設(shè)備
-
IOS 9.3使用了XCUITest
-
IOS 9.3之后Appium就開(kāi)始采用WebDriverAgent方案了
需要注意的是:目前官方Facebook已經(jīng)沒(méi)有在維護(hù)WebDriverAgent了,所以如果使用Facebook的WebDriverAgent有可能不適配后續(xù)的IOS版本及Appium
https://github.com/facebookarchive/WebDriverAgent
Appium項(xiàng)目有內(nèi)置了WebDriverAgent,而且也在同步修復(fù)BUG更新中,所以強(qiáng)烈建議使用Appium內(nèi)置的WebDriverAgent :
https://github.com/appium/WebDriverAgent
環(huán)境部署
環(huán)境說(shuō)明
Mac版本:macOS Monterey 12.4(intel平臺(tái))
Xcode版本:V13.4.1
Appium版本:V1.22.3
基礎(chǔ)依賴環(huán)境
如果你想學(xué)習(xí)自動(dòng)化測(cè)試,我這邊給你推薦一套視頻,這個(gè)視頻可以說(shuō)是B站播放全網(wǎng)第一的自動(dòng)化測(cè)試教程,同時(shí)在線人數(shù)到達(dá)1000人,并且還有筆記可以領(lǐng)取及各路大神技術(shù)交流:798478386??????
【已更新】B站講的最詳細(xì)的Python接口自動(dòng)化測(cè)試實(shí)戰(zhàn)教程全集(實(shí)戰(zhàn)最新版)_嗶哩嗶哩_bilibili【已更新】B站講的最詳細(xì)的Python接口自動(dòng)化測(cè)試實(shí)戰(zhàn)教程全集(實(shí)戰(zhàn)最新版)共計(jì)200條視頻,包括:1.【接口自動(dòng)化】目前軟件測(cè)試的市場(chǎng)行情以及測(cè)試人員能力標(biāo)準(zhǔn)。、2.【接口自動(dòng)化】全面熟練Requests庫(kù)以及底層方法調(diào)用邏輯、3.【接口自動(dòng)化】接口自動(dòng)化實(shí)戰(zhàn)及正則和JsonPath提取器的應(yīng)用等,UP主更多精彩視頻,請(qǐng)關(guān)注UP賬號(hào)。https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337&vd_source=488d25e59e6c5b111f7a1a1a16ecbe9a
1、Xcode
Xcode是Mac OS平臺(tái)上的集成開(kāi)發(fā)工具(IDE),用來(lái)開(kāi)發(fā)Mac OS應(yīng)用和IOS移動(dòng)端應(yīng)用,在Appium for IOS環(huán)境搭建時(shí)需要通過(guò)Xcode編譯WebDriverAgent運(yùn)行在設(shè)備中。Xcode安裝比較簡(jiǎn)單,直接在Apple Store里面搜索下載安裝即可。
2、Homebrew
Homebrew是Mac平臺(tái)的軟件管理軟件,它可以使我們更加容易安裝一些其他軟件,僅需要執(zhí)行簡(jiǎn)單的安裝命令,就能下載安裝所需要的軟件,省去了下載、解壓、拖拽等繁瑣的步驟。
官方提供了Homebrew的安裝命令,但是因?yàn)閲?guó)內(nèi)網(wǎng)絡(luò)的問(wèn)題導(dǎo)致不能成功
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
通過(guò)鏡像安裝方式:???????(推薦使用中科大的鏡像源)
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
3、Carthage
Carthage用來(lái)管理項(xiàng)目依賴, 類似于 Java 中的 Maven;后面編譯WebDriverAgent項(xiàng)目時(shí)就需要用到它???????
brew install carthage
carthage?version
4、ios-deploy
ios-deploy一個(gè)不需要用Xcode安裝和調(diào)試應(yīng)用的命令行工具。需要一個(gè)有效的開(kāi)發(fā)者證書(shū),需要 Xcode 7以上的版本。終端輸入命令進(jìn)行安裝:
brew install ios-deploy
5、ideviceinstaller
ideviceinstaller是一個(gè)與iOS設(shè)備的installation_proxy交互的工具,允許安裝、升級(jí)、卸載、存檔、還原和列舉已安裝或存檔的app。此工具用于在真機(jī)上運(yùn)行測(cè)試,默認(rèn)是都安裝的。
brew install ideviceinstaller
6、libimobiledevice
libimobiledevice是一個(gè)跨平臺(tái)的軟件庫(kù) ;不依賴任何已有的私有庫(kù),不需要越獄。應(yīng)用軟件可以通過(guò)這個(gè)開(kāi)發(fā)包輕松訪問(wèn)設(shè)備的文件系統(tǒng)、獲取設(shè)備信息,備份和恢復(fù)設(shè)備,管理 SpringBoard 圖標(biāo),管理已安裝應(yīng)用,獲取通訊錄、日程、備注和書(shū)簽等信息???????
#安裝最新版本libimobiledevice
brew?install?libimobiledevice?--HEAD
?Appium環(huán)境
1、Node&npm
Node是一個(gè)javascript運(yùn)行時(shí)環(huán)境,npm是節(jié)點(diǎn)包管理器。我們需要這些,因?yàn)锳ppium是一個(gè)node應(yīng)用程序。
brew install node
2、Appium
Appium提供了Appium Desktop(桌面版)和Appium Server命令行版本兩種安裝方式,前者有帶了圖形化界面,后者是純命令行方式。兩種方式任選其中一種即可。
2.1、Appium Desktop
下載地址:
https://github.com/appium/appium-desktop/releases?
需要注意的是,從Appium Desktop V1.22.0版本開(kāi)始,Appium Desktop內(nèi)置的檢查器(一個(gè)可以用來(lái)獲取頁(yè)面元素信息的工具)已經(jīng)被移除掉了,成為了一個(gè)單獨(dú)的程序。
下載安裝過(guò)程非常簡(jiǎn)單,這里我們一般選擇新版本就好了。
2.2、Appium Server命令行版本
Appium server通過(guò)npm可以下載管理
npm install -g appium
默認(rèn)將會(huì)安裝最新版本,如果需要指定版本,通過(guò)以下命令:
npm install -g appium@1.7.2
?檢查appium版本
appium -v
?啟動(dòng)appium服務(wù)
# -a參數(shù):設(shè)置appium工作地址
# -p參數(shù),設(shè)置appium工作端口號(hào)
appium -a 127.0.0.1 -p 4723
3、安裝Appium doctor
Appium doctor可以用于檢測(cè)Appium所需要的依賴環(huán)境是否是成功的
npm install appium-doctor -g
#檢測(cè)iOS環(huán)境是否安裝成功
appium-doctor --ios
necessary dependcies 必須全部是打勾狀態(tài) ,可選部分依賴可以不用全部安裝。
4、安裝Appium inspector
前面有提到過(guò),新版本Appium Desktop(從V1.22.0版本開(kāi)始)已經(jīng)將Appium inspector(檢查器)工具移除了,所以如果想要使用檢查器工具我們需要額外再下載Appium inspector:
https://github.com/appium/appium-inspector/releases
下載完之后直接安裝dmg文件即可。
配置運(yùn)行WebDriverAgent
前面我們說(shuō)過(guò)WebDriverAgent是Appium測(cè)試IOS應(yīng)用的自動(dòng)化引擎,新版本Appium和IOS最好使用Appium內(nèi)置的WebDriverAgent,當(dāng)Appium(Appium桌面版或者命令行版本)安裝好之后我們可以使用Xcode來(lái)編譯運(yùn)行WebDriverAgent。
對(duì)于Appium命令行版本,WebDriverAgent在
/usr/local/lib/node_modules/appium/node_modules/appium-webdriveragent/? 路徑下
對(duì)于Appium桌面版本,WebDriverAgent在
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-webdriveragent??路徑下
這里以命令行版本為例
點(diǎn)擊WebDriverAgent.xcodeproj使用Xcode打開(kāi)WebDriverAgent工程:
配置WebDriverAgent
第一次配置需要?jiǎng)?chuàng)建開(kāi)發(fā)者賬號(hào)
選擇 WebDriverAgentLib->Signing & Capabilities,輸入 apple id 和密碼
之后點(diǎn)擊Download Manual Profiles,再點(diǎn)擊 Manage Certificates
添加證書(shū):
之后回到Xcode工具的Signing & Capabilities再選擇剛才添加好的Team:
還需要配置WebDriverAgentRunner,在 Team 中同樣選擇即可:
運(yùn)行WebDriverAgent
選擇
Product->Scheme->WebDriverAgentRunner
Destination 中選擇要測(cè)試的設(shè)備,這里我選擇的是一臺(tái)iphone8 15.5的模擬器,當(dāng)然你可以選擇其他的設(shè)備進(jìn)行測(cè)試
最后點(diǎn)擊 Product->Test,經(jīng)過(guò)編譯運(yùn)行成功之后,會(huì)啟動(dòng)模擬器并且在模擬器中安裝一個(gè)無(wú)圖標(biāo)的 WebDriverAgent 應(yīng)用,啟動(dòng)了 WebDriverAgent 應(yīng)用之后又會(huì)返回到桌面。并且可以在 Xcode 控制臺(tái)日志中看到有 ServerURLHere 提示
在瀏覽器中輸入ServerURLHere中間的http://IP地址:端口/status,出現(xiàn)如下提示則表示W(wǎng)ebDriverAgent安裝配置成功并準(zhǔn)備好接收請(qǐng)求了。
準(zhǔn)備IOS測(cè)試app
很多小伙伴在學(xué)習(xí)階段沒(méi)有ios的app測(cè)試包可供使用,這里我們可以用appium官方提供的ios-uicatalog這個(gè)demo項(xiàng)目
https://github.com/appium/ios-uicatalog
?該demo項(xiàng)目里面包含了一些操作示例,比如滑動(dòng)、webview元素、輸入、點(diǎn)擊操作,我們可以用它來(lái)練習(xí)IOS自動(dòng)化
1、克隆項(xiàng)目代碼到本地
git clone https://github.com/appium/ios-uicatalog.git
2、運(yùn)行項(xiàng)目
使用xcode打開(kāi)項(xiàng)目目錄下的UICatalog.xcodeproj文件,直接點(diǎn)擊運(yùn)行按鈕,之后會(huì)在設(shè)備中安裝UICatalog應(yīng)用
Appium inspector識(shí)別頁(yè)面元素
借助Appium檢查器工具,我們可以識(shí)別app頁(yè)面元素信息輔助編寫(xiě)自動(dòng)化測(cè)試腳本,將之前安裝好的appium檢查器工具啟動(dòng)(需要注意的是:使用檢查器工具之前需要將appium服務(wù)啟動(dòng))
配置說(shuō)明:
Remote Host:appium服務(wù)工作ip地址
Remote Port:appium服務(wù)工作端口號(hào)
Remote Path:appium訪問(wèn)地址,默認(rèn)都是為/wd/hub這個(gè)節(jié)點(diǎn)
Desired Capabilities(所需能力)配置
platformName:測(cè)試平臺(tái)
platformVersion:系統(tǒng)版本
deviceName:設(shè)備名
udid:設(shè)備唯一標(biāo)識(shí)符
bundleId:測(cè)試app的唯一標(biāo)識(shí),類似于android應(yīng)用的包名
說(shuō)明:在填寫(xiě)所需能力配置時(shí),不需要加前綴:appium:,當(dāng)保存配置之后,檢查器工具會(huì)自動(dòng)為我們加上。
udid參數(shù)值如何獲???
選擇xcode工具欄上面的Window->Devices and Simulators,選中對(duì)應(yīng)設(shè)備即可看到udid
bundleId參數(shù)值如何獲???
打開(kāi)Xcode,對(duì)應(yīng)項(xiàng)目工程中選擇General即可看到
參數(shù)填寫(xiě)完畢記得保存下,否則下次重新啟動(dòng)appium檢查器需要重新填寫(xiě),點(diǎn)擊Start Session啟動(dòng)回話,之后可以通過(guò)該工具獲取app頁(yè)面元素信息了。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-672385.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-672385.html
到了這里,關(guān)于2023主流技術(shù) Appium+IOS 自動(dòng)化測(cè)試環(huán)境搭建的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!