WebDriverAgent重簽名爬坑記


接上一篇博文,已經配置好了Xcode環境,那接下來要完成的就是重簽名WebDriverAgent。在講重簽名之前,我們還是先來了解下WebDriverAgent,熟悉的朋友,可以直接跳過。

WebDriverAgent

WebDriverAgent簡介

這個介紹在開源項目中的README.md有描述,直接搬運過來。

WebDriverAgent簡稱WDA,WebDriverAgent 是適用於 iOS的WebDriver 服務器實現,可用於遠程控制 iOS 設備。它允許您啟動和終止應用程序、點擊和滾動視圖或確認屏幕上的視圖存在。這使其成為應用程序端到端測試或通用設備自動化的完美工具。它通過鏈接XCTest.framework和調用 Apple 的 API 來直接在設備上執行命令。WebDriverAgent 在 Facebook 開發並用於端到端測試,並被Appium成功采用。

目前使用較多的是Appium的WebDriverAgent,但Appium的WebDriverAgent是在FaceBook的基礎上開發的。而FaceBook的WebDriverAgent已經很久沒更新了,項目處於未維護狀態。

WebDriverAgent原理

圖引自testerhome,原理如下圖所示:

基礎工具安裝

我相信大家跟我一樣,想立即使用Xcode重簽名WDA,但執行 ./Scripts/bootstrap.sh 命令后,看到的卻是各種報錯。所以不要急,按如下步驟,安裝一些必要的工具。

安裝brew

Homebrew是一個包管理器,用於在Mac上安裝一些OS X沒有的UNIX工具(比如著名的wget),能在Mac中方便的安裝軟件或者卸載軟件,可以說Homebrew就是mac下的apt-get、yum神器。

安裝方式直接敲命令即可

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

我使用這個命令沒有成功,換了個命令

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

換了命令成功安裝,過程中會有輸入電腦密碼,按提示操作即可,如下所示:

安裝成功后,輸入命令 source /Users/hong/.zprofile 使其生效。

安裝carthage

使用命令 brew install carthage 即可完成安裝,如下所示:

安裝node

使用命令 brew install node 即可完成安裝

安裝WDA依賴

完成上述工具安裝后,在WDA目錄下,執行命令 ./Scripts/bootstrap.sh ,可能有些朋友會碰到如下報錯:

升級 npm

使用命令 npm install -g npm@7.21.0 即可,如下所示:

安裝node版本管理模塊

還有個報錯, ERESOLVE unable to resolve dependency tree ,度娘了下,是npm版本太高,需要降級。但我只安裝了node版本管理模塊就可以了,命令 sudo npm install n -g,操作如下:

再執行命令 ./Scripts/bootstrap.sh,正常編譯,沒有報錯,靜候佳音,期間會下各種依賴,如下所示:

依賴安裝成功后,會出現build提示,如下所示:

WebDriverAgent重簽名

到此,前期准備工作都好了,我們再來配置下Xcode,比如appleid、包名、版本。

登錄appleid賬號

具體操作如下所示:

選擇團隊

在 targets 類別中,配置簽名團隊,這里可選的數據,就是剛才我們登錄的賬號,如果沒有登錄,則選不了。操作如下所示:

但選了之后,還會有如下報錯信息,如下所示:

如何解決該問題,我們繼續來看。需要注意的是,每個包都得選擇團隊。

配置包名

我們完成的就是重簽名,所以需要重新配置個不重復的包名,操作如下所示:

將這里替換掉就好了。需要注意的是,每個包都得修改,而且需要保持一致。

設備版本

重簽名時,Xcode選擇的ios版本,最好跟本機保持一致,或相近,操作如下所示:

Test

上述配置完成后,選擇對應的項目和設備,操作如下:

選擇項目:

選擇設備:

操作 Product > Test,我們來看結果。

果不其然,使用FaceBook的WDA重簽名遇到了以下報錯,一一列舉,我們來看。

報錯總結

報錯一

報錯信息:Building for iOS, but the linked and embedded framework 'RoutingHTTPServer.framework' was built for iOS + iOS Simulator

解決辦法:

在 targets 下的類別中,依次將 Build Settings 里的 Validate Workspace 修改為 Yes ,操作如下所示:

報錯二

報錯信息:/WebDriverAgent/Carthage/Build/iOS/RoutingHTTPServer.framework/Headers/RouteResponse.h:2:9: Double-quoted include "HTTPResponse.h" in framework header, expected angle-bracketed instead

解決辦法:

在 project 的 Info 信息中,將 Quoted Include In Framework Header 修改為 false ,操作如下所示:

報錯三

報錯信息:/WebDriverAgent/WebDriverAgentLib/Utilities/FBFailureProofTestCase.m:29:1: Implementing deprecated method

解決辦法:

recordFailureWithDescription 修改為 recordIssue ,操作如下所示:

報錯四

報錯信息:xcode 編譯程序運行,總是提示輸入用戶名和密碼

解決辦法:

通過提示框,進入到秘鑰配置頁面,配置秘鑰的訪問權限。將自己的秘鑰配置成 允許所有應用程序訪問此項目 ;或者 添加具體的應用。操作如下所示:

解決了上面四個問題,繼續Test,手機上是成功安裝了WebDriverAgent,但還是有報錯,此報錯按度娘中的修改也沒有成功。

具體報錯如下:

-[UITestingUITests internalImplementation]: unrecognized selector sent to instance 0x2825b1900 (NSInvalidArgumentException)

我比較喜歡折騰,既然FaceBook的不行,那索性就換Appium的試試,換Appium的WDA,竟然直接成功了。可能是之前的錯,已經排坑了,所以成功的這么順滑。

重簽名成功后,控制台出現的日志,如下所示:

好了,WDA重簽名終於成功了,可以搗鼓ios自動化了,下期再見。


免責聲明!

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



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