日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS 自动化——技术方案、环境配置

發布時間:2023/12/31 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 自动化——技术方案、环境配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


移動端的自動化測試,最常見的是 Android 自動化測試,我個人覺得 Android 的測試優先級會更高,也更開放,更容易測試;而 iOS 相較于 Android 要安全穩定的多,但也是一個必須測試的方向,這個系列文章記錄了 iOS 自動化測試的一些實踐。

Xcode 下載地址:https://developer.apple.com/download/
下載安裝好的圖標如下 :

先來看目前主流的 iOS 移動測試框架

  • Appium:目前最常用的 App 自動化測試框架,具備跨平臺性
  • Calabash-IOS :BDD 模式,沒有過多的了解使用
  • KIF:KIF 使用 XCTest 框架,需要對 Objective—C 、Swift 和 XCTest 掌握程度較高,這個對測試工程師來說學習成本太大
  • XCTest:蘋果官方提供的 iOS 測試框架,要求同 KIF 一致
  • WebDriverAgent:由 Facebook 推出的一款 iOS 移動測試框架,也是 Appium 跨平臺的底層驅動;WDA 本身也是一個完整的基于 webdriver 協議的框架
  • Uiautomation :在 Xcode8 后廢棄

之前的 Android 自動化我們選擇的是 Appium 框架作為底層的驅動框架,當時就介紹說 Appium 的優點之一就是跨平臺性,其實也就是因為其底層封裝了 WebDriverAgent,而我們期望的是:

  • 做一套可以跨平臺支持的 App 測試方案,可以在公司的 Android 和 iOS 版本間自由切換測試
  • 并且在編程語言上要是測試工程師常用的 Java 或 Python,降低學習成本
    綜上原因,那么最終的選擇依然是 Appium。

Appium 官方提供了一個演練的 iOS App,以此為例進行演示。

Appium 演練 example 地址:
https://github.com/appium/ios-uicatalog

將項目 clone 到本地后用 Xcode 打開,注意打開 iOS 項目要打開以 .xcodeproj 結尾的文件 。

插入真機,Xcode 上選擇真機,在Singing 中添加 AppleID 作為 account,生成一個本地的 Provisioning Profile 和設備上的證書

踩坑:你可能會遇到如下的錯誤信息


這是因為你的 bundle identifier 不唯一導致,將其修改自定義為一個唯一的 bundle identifier 再嘗試即可

Xcode 中選中 Build,Success 后在手機中我們可以看到 UICatalog 已經被成功安裝,嘗試打開:

踩坑: 蘋果對未在 AppStore 中上架的 App 做了限制,默認不受信任,所以我們需要手動將其設置為信任: 設置-通用-描述文件與設備管理

這個時候再打開 App,就可以正常操作運行了

上面介紹了這里是選中 Appium 作為移動測試框架,因此 Appium 相關環境的安裝必不可少,具體安裝細節可參考另一篇文章:Windows(Win10)、Mac下安裝 Appium

另外還需要幾個輔助測試工具和命令,依賴工具包安裝:

查看模擬器列表:instruments -s devices 運行結果如下,可以看到最前面兩行顯示的其實是本機的 Mac 和連接的 iPhone 真機,剩下的是模擬器。

查看真機列表:idevice_id -l

安裝 App:ideviceinstaller -i demo.app
命令行編譯(在做持續集成時候可能會用到):

雖然 Appium 使用WDA作為底層的 iOS 自動化框架,但是由于版本的更新等原因,可能造成 Appium 本身自帶的 WDA 會有 bug,因此為了保險起見,先手動下載 facebook 的 WebDriverAgent facebook WebDriverAgengithub

地址:https://github.com/facebookarchive/WebDriverAgent

然后我們進入 WebDriverAgent 進行編譯,在 Scripts 下有一個 bootstrap.sh 腳本,執行它即可。

小技巧: 使用 bash -x 命令可以輸出更詳細的執行過程

踩坑: 安裝最后我們可以看到部分依賴安裝需要安裝 Carthage 這個東西,如果沒注意的話就會造成 RoutingHTTPServer 部分文件缺失,后面 build 就會報錯 。

通過命令 brew install carthage 安裝后再執行 ./Scripts/bootstrap.sh 即可。

根據 WebDriverAgent 官網提供的步驟,將參數替換為我們真機的參數后在真機上嘗試build 。


踩坑: 執行完命令后可能會出現如下報錯

從報錯信息來看,缺少 development team,那么我們回到 Xcode,將 Automatically manage signing 進行勾選后選擇一個 Team,注意要進入 WebDriverAgentRunner 中進行設置 。

設置好之后又會出現報錯,如下:

這個報錯信息就和我們之前提到的一樣,bundle indentifler 不唯一,保險起見,這里將項目中所有的 Targets 都進行了修改

修改好之后我們再次 build,之前的問題解決了,不幸的是 build 又 fail 了,又出現了新的報錯:

幸運的是在 Google 上一位外國友人輕描淡寫的一句話解決了我的問題(感謝外國友人~)

沒錯,我們在報錯出雙擊,進入到報錯代碼處,將 assign 改為 strong 后再次 build :

Build succeeded!!!老淚縱橫…

最終,再執行

終于在 iOS 真機上看到了 WDA 的身影

上面是我所經歷的各種坑,也都是我實測過一步步填平的,下面試我認識的小伙伴踩到的坑和填坑方法,作為補充供記錄參考
1)執行 ./Scripts/bootstrap.sh ERROR in ./js/app.js 報錯



2)執行時候報 xcodebuild failed with code 65 錯誤


花了很大的功夫和篇幅,記錄 iOS 自動化的準備工作,踩了很多坑,坑不能白踩,后面繼續實現 iOS 的自動化測試落地,也歡迎小伙伴一起留言探討。

更多技術文章

總結

以上是生活随笔為你收集整理的iOS 自动化——技术方案、环境配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。