iOS自動化のためのWDA(WebDriverAgent)のインストールとステッピング(この記事は単なる経験記録であり、元のWDAは破棄されました。詳細については、更新手順を参照してください)

目次

リリースノート

1.WDAの概要

第二に、展開環境

3、インストール手順

1.基本的な依存関係をインストールします

2.WDAをダウンロードします

3.bootstrap.shを実行します

4.WebDriverAgentプロジェクト構成を開きます

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のインスペクターを開き、このインターフェイスのホームをクリックすると、電話がメインページに戻ります。

 

 

おすすめ

転載: blog.csdn.net/xlyrh/article/details/108410738