轉載:https://testerhome.com/topics/4960ios
在上一篇文章中,我對本系列教程的項目背景進行了介紹,並對自動化測試平臺的建設進行了規劃。git
在本文中,我將在已準備就緒的iOS自動化測試環境的基礎上,經過Appium調用模擬器運行iOS應用。內容非常基礎,熟悉的同窗可直接略過。shell
做爲徹底的iOS新手,困惑的第一個問題就是iOS安裝包文件。瀏覽器
在Android系統中,安裝App的途徑不少,除了各種應用市場,普通用戶也常常直接下載apk安裝包文件後手動進行安裝,所以你們對Android的安裝包文件都比較熟悉。服務器
可是對於iOS系統就不同了,因爲咱們普通用戶在iOS上安裝應用的時候基本上只能經過Apple Store進行安裝(未越獄),沒有機會接觸原始的安裝包文件,所以每每連iOS應用的安裝包究竟是什麼格式後綴都不清楚。微信
如今咱們想在Appium App中經過模擬器運行被測應用,須要指定iOS app的安裝包路徑,所以須要首先得到一個iOS app安裝包。markdown
那麼iOS app的安裝包長啥樣呢?網絡
或者在這個問題以前,咱們先來看下另外一個問題:對於iOS設備來講,若是不經過Apple Store,咱們能夠怎樣安裝一個應用?架構
針對這個問題,我搜了些資料,也請教了周圍的同事,瞭解到的途徑有以下幾個:app
.ipa
文件)上傳至一些下載服務器(例如fir.im
),並生成二維碼,而後用戶掃描二維碼後便可經過瀏覽器下載安裝包並進行安裝。由此聯想到另一個方法,經過微信文件傳輸助手將安裝包(.ipa
)傳輸至iOS設備,而後再進行安裝應該也是能夠的吧?這種方法不知在原理上是否可行,由於在試驗時因爲安裝包大於30M,微信沒法傳輸,因此沒能進行驗證。.ipa
文件,前提是.ipa
文件具備合適的簽名。在上面列舉的安裝應用的途徑中,反覆提到了.ipa
文件,那.ipa
應該就是iOS應用程序的後綴了吧?暫且這麼認爲吧。
再回到前面的場景,要在iOS模擬器中運行iOS應用,咱們是否能夠找研發人員要一個.ipa
安裝包文件,而後就能在模擬器中加載運行應用呢?
剛開始的時候我是這麼認爲的。因而我獲取到.ipa
文件後,在App Path
中填寫該文件的路徑,而後啓動Appium Server;接着我再打開Inspector時,發現iOS模擬器啓動了,可是在應用啓動的時候就出問題了,始終沒法正常啓動,感受像是啓動崩潰,反覆嘗試屢次仍然如此。
再次通過Google,總算是明白出現問題的緣由了,總結下來有以下幾點:
.ipa
文件,都是面向於ARM處理器的iOS設備,只能在真機設備中進行安裝;.ipa
文件,是沒法在iOS模擬器中正常運行的,畢竟處理器架構都不同;.app
。.app
文件接下來,就說下如何獲取.app
文件。
雖然是測試人員,不會對被測iOS項目貢獻代碼,可是也不能老是找研發幫忙編譯生成.app
文件。因此,在本地搭建完整的iOS項目開發環境仍是頗有必要的。
對於iOS開發環境的搭建,當前社區中應該已經有了不少完整的教程,我在這兒就不詳細描述了,只簡單說下我搭建過程當中涉及到的幾個點。
首先,Mac OSX、Xcode、Apple Developer Tools這些基礎環境的安裝,在上一篇文章中已經進行說明了;
而後,申請項目源碼的訪問權限,git clone
到本地;
接着是項目依賴環境的問題;一般一個較大型的iOS項目都會引用許多第三方庫,而這些依賴庫並不會直接保存到項目倉庫中,一般是採用CocoaPods
進行管理;簡單地說,CocoaPods
是針對Swift
和Objective-C
項目的依賴管理器,相似於Java中的Maven
,Ruby中的Gem
,Python中的pip
。
固然,iOS項目的依賴管理工具也不是隻有CocoaPods
一個,若是是採用的別的依賴管理器,請自行查找對應的資料。
採用CocoaPods
管理的項目,在項目根目錄下會包含Podfile
和Podfile.lock
文件,裏面記錄了當前項目依賴的第三方庫以及對應的版本號。
安裝CocoaPods
很簡單,採用gem
便可。
$ sudo gem install cocoapods
而後,進入到iOS項目的目錄,執行pod install
命令便可安裝當前項目的全部依賴。
$ cd Project_Folder $ pod install Re-creating CocoaPods due to major version update. Analyzing dependencies .....(略) Downloading dependencies .....(略) Generating Pods project Integrating client project Sending stats Pod installation complete! There are 27 dependencies from the Podfile and 28 total pods installed.
關於CocoaPods
的更多信息,請自行查看官方網站
在依賴安裝完成後,正常狀況下,就能夠在Xcode中編譯項目了。
沒有別的須要注意的,將target選擇爲模擬器(iOS Simulator)便可。並且針對模擬器進行編譯時,也不會涉及到開發者證書的問題,項目配置上會簡單不少。待後續講到真機上的自動化測試時,我再對證書方面的內容進行補充。
編譯完成後,在Products目錄下,就能夠看到XXX.app
文件,這裏的XXX
就是項目名稱;而後,選中XXX.app
文件,【Show in Finder】,便可在文件目錄中定位到該文件。
接下來,將XXX.app
文件拷貝出來,或者複製該文件的Full path
,怎樣都行,只要在Appium
的App Path
中能定位到該文件就行。
被測應用.app
準備就緒後,接下來就能夠在iOS模擬器中運行了。
回到前面的那張圖。啓動Appium app
後,對於模擬器運行的狀況,在iOS Settings
中必須設置的參數項就3個,App Path
、Force Device
和Platform Version
。對於真機運行的狀況,後續再單獨進行說明。
設置完畢後,點擊【Launch】,啓動Appium Server
。
而後,點擊圖中紅框處的按鈕,便可經過Inspector
啓動模擬器,並在模擬器中加載iOS應用。
在模擬器中,咱們能夠像在真機中同樣,體驗被測應用的各項功能;而且,在Appium的日誌臺中,能夠實時查看到日誌信息。
整個過程是挺簡單的,不過,在探索過程當中我仍是有遇到一個坑。
經過Inspector
啓動模擬器時,老是彈框報錯,報錯形式以下。
剛開始出現這問題時百思不得其解,由於提示的信息並不明顯,Google了好一陣也沒找到緣由。最後只有詳細去看日誌信息,才發現問題所在。
在日誌中,發現的報錯信息以下:
[iOS] Error: Could not find a device to launch. You requested 'iPhone 6 (8.4)', but the available devices were: ["Apple TV 1080p (9.2) [98638D25-7C82-48DF-BDCA-7F682F951533] (Simulator)","iPad 2 (9.2) [5E22F53E-EAB3-45DF-A1DD-10F58E920679] (Simulator)","iPad 2 (9.3) [4B2D2F9A-C099-4C13-8DE9-27C826A521C2] (Simulator)","iPad Air (9.2) [825E4997-9CD8-4225-9977-4C7AE2C98389] (Simulator)","iPad Air (9.3) [E4523799-E35F-4499-832B-12CF33F09144] (Simulator)","iPad Air 2 (9.2) [8057039D-F848-453E-97EC-2F75CAEA2E77] (Simulator)","iPad Air 2 (9.3) [0B8F49DA-832A-4248-BA1D-9DA5D11E31FD] (Simulator)","iPad Pro (9.2) [AF1F2D06-3067-41B5-AC2B-4B0ED88BF5D9] (Simulator)","iPad Pro (9.3) [C39617A6-9D91-4C0B-B25B-741BD57B016C] (Simulator)","iPad Retina (9.2) [D3C694E1-E3B4-47BE-AB5E-80B3D4E22FC2] (Simulator)","iPad Retina (9.3) [907C7B06-ED2C-48AC-AC46-04E4AD6E0CA3] (Simulator)","iPhone 4s (9.2) [1A786195-94E3-4908-8309-7B66D84E4619] (Simulator)","iPhone 4s (9.3) [3F76F34B-5A8F-4FD1-928D-56F84C192DDD] (Simulator)","iPhone 5 (9.2) [0D79A4CA-71EB-48A6-9EE4-172BEF3EB4E0] (Simulator)","iPhone 5 (9.3) [04270D44-F831-4253-95F2-3D205D2BC0D9] (Simulator)","iPhone 5s (9.2) [13A16C07-3C5B-4B04-A94B-B40A63238958] (Simulator)","iPhone 5s (9.3) [D30A7B34-BA01-4203-80DA-FAEA436725F9] (Simulator)","iPhone 6 (9.2) [5D01650F-2A31-4D53-A47A-CCF7FD552ADD] (Simulator)","iPhone 6 (9.3) [2F0810F6-C73B-4BA4-93BA-06D4B6D96BDA] (Simulator)","iPhone 6 Plus (9.2) [9A840B78-E6CE-4D18-BE83-16B590411641] (Simulator)","iPhone 6 Plus (9.3) [27C6557A-B09D-4D8A-9846-DA8FE0A8E8D5] (Simulator)","iPhone 6s (9.2) [E7F5B8A5-0E85-404F-A4D4-191D63E7EC1B] (Simulator)","iPhone 6s (9.3) [6F702911-13C2-472C-9ECD-BADD4385CB77] (Simulator)","iPhone 6s (9.3) + Apple Watch - 38mm (2.2) [B63FFAA4-00A4-473B-9462-3664F41F9001] (Simulator)","iPhone 6s Plus (9.2) [58837F78-511A-4F0B-9DDF-782E3B9935BD] (Simulator)","iPhone 6s Plus (9.3) [C31003C6-DCE2-414D-AD7F-376F6FA995B0] (Simulator)","iPhone 6s Plus (9.3) + Apple Watch - 42mm (2.2) [E3154768-CA23-45CC-90E5-2D0386A57B7D] (Simulator)"]
問題在於,我設置iOS Settings
時,將Force Device
設置爲"iPhone 6",將Platform Version
設置爲「8.4」,可是通過組合,iPhone 6 (8.4)
並不在可用的模擬器設備列表中。
再來看日誌中提示的可用設備,發現「iPhone 6」設備對應的Platform Version
只有「9.2」和「9.3」。而後回到iOS Settings
,發現Platform Version
的下拉框可選項就沒有「9.2」和「9.3」,最新的一個可選版本也就是「8.4」。
這應該是Appium app
的一個bug吧。不過好在Platform Version
參數雖然是經過下拉框選擇,可是也能夠在框內直接填寫內容。因而我在Platform Version
設置框內填寫爲「9.3」,而後再次啓動時,發現iOS模擬器就能夠正常啓動了。
如今,咱們已經成功地經過Appium Inspector調用模擬器並運行iOS應用,接下來,咱們就要開始嘗試編寫自動化測試用例了。
在下一篇文章中,咱們將對Appium Inspector的功能進行熟悉,經過Inspector來查看iOS應用的UI元素信息,並嘗試採用腳本語言與UI進行交互操做。
公衆號:DebugTalk
原文連接:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI