目次
5.WebDriverAgentRunnerをコンパイルして実行します
リリースノート
FacebookのWDAはiOS10の時代にAppleによって放棄されました。Appiumの公式WDAはまだ更新中です。公式リンクは次のとおりです。
https://github.com/appium/WebDriverAgent
インストール構成はFacebookに似ていますが、署名証明書を構成するだけで、コードを変更する必要はなく、バンドルIDを変更する必要もありません。
iOSアプリケーションインターフェイスを表示する場合は、AppiumのInspectorをインストールして使用するだけで、プロテストを利用できます(2020年11月2日)。
1.WDAの概要
WebDriverAgentは、iOS側にWebDriverサーバーを実装します。このサーバーを使用すると、iOSデバイスをリモートで制御できます。アプリケーションを起動、強制終了、クリック、ビューのスクロール、またはページが正しく表示されているかどうかの確認を行うことができます。
特徴:
- デバイスとシミュレーターで動作します
- WebDriver仕様のほとんどを実装します
- モバイルJSONワイヤープロトコル仕様の一部を実装し ます
- USB対応 デバイス用
- 現在のデバイスの状態を検査するための使いやすいユーザーインターフェイスを備えたインスペクター エンドポイント
- Xcodeを介して直接起動およびデバッグできるため、開発サイクルが簡単です。
- まだサポートされていませんが、tvOSとOSXで動作します
第二に、展開環境
OS:10.15.6
Xcode:11.7(ビルドバージョン11E801a)
参照ドキュメント:https://github.com/facebookarchive/WebDriverAgent
3、インストール手順
1.基本的な依存関係をインストールします
brew install git
醸造インストールカルタゴ
2.WDAをダウンロードします
次のコマンドを実行します:git clone https://github.com/facebookarchive/WebDriverAgent.git
実行3. bootstrap.shを
cd WebDriverAgent
./Scripts/bootstrap.sh
注:実行によりエラーが報告される場合があります。エラーの内容は次のとおりです。
ERROR in ./js/app.js
Module parse failed: /Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent/Inspector/js/app.js Unexpected token (67:6)
You may need an appropriate loader to handle this file type.
SyntaxError: Unexpected token (67:6)
解決策:ファイルWebDriverAgent / Inspector / webpack.config.jsを変更し、次の「、exclude:/ node_modules /」を削除して、shを再度実行します。
module: {
loaders: [
{ test: /\.js?$/, loaders: ['babel-loader'], exclude: /node_modules/ },
{ test: /\.js?$/, loaders: ['babel-loader'] },
{ test: /\.css?$/, loader: 'style-loader!css-loader' },
]
},
4.WebDriverAgentプロジェクト構成を開きます
Xcodeを使用してWebDriverAgentプロジェクトを開き、プロジェクトパスの下にあるWebDriverAgent.xcodeprojをダブルクリックします。
(1)WebDriverAgentRunnerプロジェクトのバンドルIDを変更します。ここで名前をカスタマイズできます(ID名を繰り返すことはできません)。
(2)証明書をインポートします(開発者証明書を持っていないため、バンドルIDを開発チームに提供し、エクスポートされたp12と依存ファイルを借用します)
注:ここで提供されている依存関係ファイルを使用したコンパイルは、引き続き失敗します。
エラーメッセージ:WebDriverAgentのビルドは[パッケージ名の設定] .xctrunnerバンドルIDを要求しています
解決策:チーム証明書を置き換えます。次のリンクを参照してください:https://github.com/appium/appium/pull/14233
5.WebDriverAgentRunnerをコンパイルして実行します
(3)選択择製品->スキーム-> WebDriverAgentRunner
(4)[製品]-> [宛先]->接続されているiOS電話の名前(ここで使用されている実際の電話)を選択します
(5)[製品]-> [テスト]を実行すると、インストールが成功すると、WebDriverAgentのアプリケーションアイコンが電話に表示されます。
注1:コンパイル中にエラーが報告されます。エラーメッセージは次のとおりです。
1)セマンティックの問題:オブジェクトタイプの「assign」プロパティがぶら下がり参照になる可能性があります。'unsafe_unretained'の使用を検討してください
2)解析の問題:モジュール 'RoutingHTTPServer'をビルドできませんでした
解決策:ダブルクリックしてエラーコードを入力し、assign to unsafe_unretainedを変更し、cleanとbuildを実行すると、エラーがなくなります。
注2:ビルドが成功した後、Testを実行すると例外がスローされ、エラーメッセージは次のようになります。
2020-06-12 19:57:31.235846-0700 WebDriverAgentRunner-Runner[1849:82950] Running tests...
Test Suite 'All tests' started at 2020-06-12 19:57:32.209
Test Suite 'WebDriverAgentRunner.xctest' started at 2020-06-12 19:57:32.212
Test Suite 'UITestingUITests' started at 2020-06-12 19:57:32.213
Test Case '-[UITestingUITests testRunner]' started.
t = 0.00s Start Test at 2020-06-12 19:57:32.226
t = 0.01s Set Up
2020-06-12 19:57:32.240001-0700 WebDriverAgentRunner-Runner[1849:82950] -[UITestingUITests internalImplementation]: unrecognized selector sent to instance 0x283250c30
t = 0.05s Assertion Failure: <unknown>:0: failed: caught "NSInvalidArgumentException", "-[UITestingUITests internalImplementation]: unrecognized selector sent to instance 0x283250c30"
(
問題の原因は、FBFailureProofTestCaseのinternalImplementationAPIがXCode11.4の後に削除されたことです。
解決策:WebDriverAgent / WebDriverAgentLib / Utilities / FBFailureProofTestCase.mを開き、26〜36行目を変更して、次の赤いコードを追加します
if([self responseToSelector:@selector(internalImplementation)]){
self.internalImplementation =
(_ XCTestCaseImplementation *)[FBXCTestCaseImplementationFailureHoldingProxy
proxyWithXCTestCaseImplementation:self.internalImplementation];
} else { self.shouldSetShouldHaltWhenReceivesControl = NO; self.shouldHaltWhenReceivesControl = NO; }
第四に、インストールが完了したことを確認します
国内の携帯電話の設定では次のポートを転送する必要があるため、コマンドラインが実行されます:iproxy 8300 8100
次に、ブラウザでリクエストします:http:// localhost:8300 /、json文字の文字列が返された場合、WDAのインストールは成功します
http:// localhost:8300 / statusは、現在のデバイスのステータスを表示し、wdaと通信するためのセッションIDを取得できます。
http:// localhost:8300 / inspector WDAのインスペクターを開き、このインターフェイスのホームをクリックすると、電話がメインページに戻ります。