Appium Maven依存関係: セットアップ Eclipse プロジェクト例

⚡ スマートサマリー

Appium Mavenの依存関係管理機能により、モバイル自動化プロジェクトでpom.xmlにjava-clientアーティファクトを宣言できるため、Mavenがすべてのjarファイルを自動的に解決し、手動でダウンロードすることなく、どのマシンでも同じビルドを実行できます。

  • 🔴 Mavenの機能: Apache Maven 単一の宣言型pom.xmlファイルからビルドライフサイクルを管理し、依存関係を解決します。
  • ☑️ 遺物1点: io.appium java-client の依存関係は、 Selenium API、リモートドライバ、およびサポートjarファイルは推移的に関連しています。
  • バージョン管理: java-client リリースを Selenium 実行時に NoSuchMethodError を回避するために宣言される範囲。
  • 🧪 固定レイアウト: Surefireはsrc/test/java以下のクラスのみを実行するため、配置が間違っているテストはコンパイルはされるものの、実行されません。
  • 🛠️ コマンドライン: mvn clean test はテストスイートをコンパイルして実行し、結果を target/surefire-reports に書き込みます。
  • 📊 受験資格: Maven は決して開始しません Appium サーバーまたはデバイスの両方が、ビルド開始前に準備されている必要があります。

Appium pom.xmlとjava-clientアーティファクトを使用したMaven依存関係の設定

何ですか Apache Maven?

Apache Maven   Javaベースのプロジェクト管理および自動化ツール。開発者がビルドライフサイクル全体を簡単に実行できるように、マルチタスクフレームワークを提供します。 Java アプリケーション。Maven は、POM (プロジェクト オブジェクト モデル) と呼ばれる XML 形式で事前定義および宣言されており、「pom.xml」と呼ばれます。C#、Scala、Ruby などの他の言語にも使用できます。

Mavenフレームワークを使用すると、あらゆるプロジェクトで以下のタスクを簡単に管理できます。

  • ビルドサイクル
  • プロジェクト文書
  • レポートチェック
  • スクラム管理
  • リリース情報

Mavenの基本的な用途は以下のとおりです。

  • 標準のディレクトリ構造を強制します。
  • 再利用可能で保守が簡単なプロジェクト構造を提供します。
  • パッケージの依存関係を解決します。
  • 構成管理フレームワークを提供します。

その依存関係解決能力はまさに Appium プロジェクトのニーズは、 Java クライアントが連鎖的に引き込む Selenium 誰も手動でダウンロードしたがらないjarファイル。

ダウンロード Appium Mavenの依存関係

書き始める前に Appium Maven を使用した依存関係テストでは、 Appium Maven依存関係 — Appium JARダウンロードファイル — Maven Centralリポジトリのウェブサイト以下のスクリーンショットは、Maven Central 上の java-client アーティファクト一覧を示しています。ここには、公開されているすべてのバージョンとそのすぐに使用できるコードスニペットが掲載されています。

Appium Mavenセントラルリポジトリの検索ページにおけるjava-clientアーティファクト一覧

または、下記に記載されている POM.xml アーティファクトを直接追加してください。

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>3.4.1</version>
</dependency>

⚠️ バージョンノート:   3.4.1 上記の座標は元の例であり、ブロックの正しい形状を示しています。これは W3C WebDriver プロトコルより前のものなので、新しいプロジェクトではバージョンを上げる必要があります。執筆時点での Maven Central の最新リリースは 10.1.1が必要です Selenium 4.42.0以降。

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>10.1.1</version>
</dependency>

私たちのところを通ってください Maven チュートリアル Maven を構成する方法を学ぶには Eclipse.

Appium Mavenプロジェクトの構造と必要な依存関係

Mavenは固定のレイアウトを強制するため、それを理解しておけば、このチュートリアルの後半で起こる混乱のほとんどを防ぐことができます。生成されたプロジェクトには、重要な4つの場所が含まれています。

  • pom.xml — プロジェクトルートにあるプロジェクトオブジェクトモデル。すべての依存関係とプラグインが宣言されています。
  • ソース/メイン/java — アプリケーションクラスとヘルパークラス。
  • src/test/java — テストクラス、およびビルド実行時に Surefire プラグインがスキャンする唯一のディレクトリ。
  • ターゲット —コンパイルされた出力とテストレポート。ビルドごとに再生成されます。

その Appium java-client は唯一の必須依存関係です。 Selenium API、リモートドライバ、サポートアーティファクトは推移的に関連しています。多くのチームは依然として固定しています。 Selenium バージョンが一箇所に表示されるように明示的に設定し、テストランナーを追加します。

<dependencies>
  <dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>10.1.1</version>
  </dependency>
  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.42.0</version>
  </dependency>
</dependencies>

2つのバージョンを互換性のある状態に保つ。java-clientのリリースでは、 Selenium サポート範囲、そして古いクライアントと新しいクライアントを混在させること Selenium 実行時にNoSuchMethodErrorが発生する最も一般的な原因です。 java-clientリポジトリ 各リリースにおけるペアリングを文書化しています。

テストアプリケーション Appium そしてメイビン

依存関係が確立されると、 Eclipse 以下のワークフローは、実行可能なプロジェクトをゼロから構築します。 Appium Java Mavenプラグイン Eclipseワークスペースはあらゆるテストに対応可能です Android .apk とのアプリケーション Appium そして、Maven は、 Appium 以下の Maven プロジェクトの例。

ステップ1) このステップでは、

  1. 「新規」に移動 >> Maven プロジェクトを選択
  2. 「次へ」ボタンをクリックしてください

新規プロジェクトウィザードが開くと、ここに示されているように、Mavenプロジェクトが選択された状態で起動します。

Eclipse Mavenプロジェクトを選択した状態で新規プロジェクトウィザードを実行

ステップ2) 次に、「新しい Maven プロジェクト」ウィンドウに「Appium グループIDとアーティファクトIDの列に「Test」と入力します。このステップでは、以下を入力する必要があります。

  1. グループID
  2. アーティファクトID
  3. パッケージング
  4. 名前と Descriptexpression CMS
  5. 仕上げ

完成した新規Mavenプロジェクトフォームは、以下のスクリーンショットのようになります。

グループID、アーティファクトID、バージョン、パッケージングが入力された新しいMavenプロジェクトウィンドウ

[完了] ボタンをクリックすると、定義されたグループ ID の下に新しいクラスが開きます (Appiumテスト)名前。

ステップ3) はじめに Appium スクリプトを開くには、左側のエクスプローラーウィンドウで「src/main/java」を右クリックします。次に、「新規」>>「クラス」を選択します。 Appium 選択したクラス内のコード。

そのクラスを作成するために使用したコンテキストメニューを以下に示します。

src/main/java を右クリックしてメニューを開き、新規とクラスを表示します。 Eclipse エクスプローラ

ステップ4) 同じプロジェクト内で、左側のエクスプローラーメニューから「pom.xml」をクリックします。「pom.xml」タブには、デフォルトですべての依存関係が表示されます。下の画像を参照してください。

pom.xml エディタータブ Eclipse 解決済みのプロジェクト依存関係を一覧表示します

デフォルトの pom.xml が存在しない場合は、すべての Maven を追加するだけです。 Appium 依存関係、例tracMavenセントラルリポジトリのWebサイトから引用:

https://central.sonatype.com/artifact/io.appium/java-client

編集された pom.xml には Appium 追加された依存関係は以下のとおりです。

pom.xml ソースビュー後 Appium java-client の依存関係が貼り付けられました

ステップ5) 次に、左側のエクスプローラーで「pom.xml」または「」の XML コードを右クリックします。Appium「Test」プロジェクトを選択します。次に、下図のように「実行」→「Maven Clean」オプションをクリックします。

Eclipse 「実行」サブメニューで「Maven Clean」オプションがハイライト表示されている。

実行中は、以下のコンソール出力のように、Maven関連のjarファイルと成功メッセージがすべて表示されます。 Appium Java Mavenが設定された環境におけるクライアントのMaven依存関係テスト。

Eclipse コンソールにダウンロードされたMaven jarファイルとビルド成功メッセージが表示される

実行方法 Appium Mavenコマンドを使用したテスト

その Eclipse メニューは便利ですが、同じビルドをビルドサーバー上で無人で実行する必要があり、その場合はコマンドラインが唯一の選択肢となります。pom.xml が格納されているフォルダでターミナルを開き、以下のコマンドを使用してください。

mvn clean
mvn clean test
mvn clean install
mvn test -Dtest=LoginTest

それぞれに明確な役割がある。

  • mvn clean を削除します target ディレクトリなので、古いものは次のビルドに引き継がれません。これがコマンドです。 Eclipse 上記のトリガーに関するウォークスルー。
  • mvnクリーンテスト プロジェクトをコンパイルし、テストクラスを実行します。Maven Surefireプラグインは、それらを自動的に取得します。 src/test/javaデフォルトのインクルードパターンを使用する Test*.java, *Test.java, *Tests.java (NAIST) と *TestCase.java.
  • mvn クリーンインストール テストを実行し、パッケージ化された成果物をローカルリポジトリに配置することで、他のプロジェクトがそれに依存することができるようにします。
  • mvn test -Dtest=LoginTest デバッグ中に実行対象を単一のクラスに絞り込みます。

2つのポイントが人々を惑わせる。まず、 Appium ビルドを開始する前に、サーバーが既に実行されていて、デバイスまたはエミュレータが接続されている必要があります。Maven はどちらも起動しないためです。デバイスを検証するには、 ADB まずチェックします。次に、結果が書き込まれます。 target/surefire-reportsこれは、CI ジョブがアーカイブするフォルダです。 Surefire使用ガイド 構成オプションを詳細に説明し、同じコマンドで Appium スイートから Jenkins.

コマンドと Appium Mavenのエラーとその解決方法

ほとんどの失敗は Appium Mavenの設定ミスは、テストコード自体ではなく、いくつかの再現性のある原因から発生します。以下の表は、それぞれの症状と一般的な解決策を示しています。

症状 考えられる原因 修正する
io.appium:java-client の依存関係を解決できませんでした バージョン文字列が間違っているか、Maven Centralへのネットワークアクセスがありません。 Maven Centralのリストから座標をそのままコピーして、ビルドを再実行してください。
NoSuchMethodError または NoClassDefFoundError は Selenium class java-clientとselenium-javaのバージョンは互換性がありません 一致する Selenium java-clientのリリースで宣言されている範囲にバージョンを合わせる
テストはコンパイルされるが、実行されない。 テストクラスがsrc/main/javaにあるか、クラス名がSurefireのインクルードパターンと一致しません それらをsrc/test/javaに移動し、クラス名がTestで終わるように名前を付けてください。
ポート4723での接続が拒否されました その Appium サーバーが実行されていません 始める Appium ビルド前のサーバー
無効またはサポートされていない機能 最新のドライバーで使用される従来の機能名 Rev現在 望ましい能力 あなたのプラットフォームのために
サポートされていないクラスファイルのメジャーバージョン Mavenで使用されるJDKは、pom.xmlのコンパイラレベルとは異なります。 maven.compiler.sourceとtargetプロパティをインストール済みのものに合わせてください。 JDK

ビルドが失敗した場合は、Mavenが出力する最後のエラーではなく、最初のエラーメッセージを確認してください。後の行は通常、最初のアーティファクトが不足していることが原因です。

よくあるご質問

古いチュートリアルからコピーしたバージョンではなく、Maven Central に掲載されている最新のリリースを使用してください。執筆時点では 10.1.1 であり、 Selenium クラスパスに4.42.0以降のバージョンが必要です。

機械学習モデルは、UI変更後に要素ロケーターを修復し、デバイス間で重複する障害をグループ化し、コミットによってどのテストが失敗する可能性が高いかを予測するため、より短いMaven実行でリスクの高い領域をカバーできます。

Copilotは、1行のコメントからgroupId、artifactId、version要素を補完します。ただし、古いバージョン番号を提案することが多いため、ファイルをコミットする前にMaven Centralで互換性を確認してください。

厳密にはそうではありません。java-client は次のように宣言します。 Selenium 成果物は推移的に変化します。多くのチームは依然としてselenium-javaを明示的に固定しているため、バージョンが明確になり、アップグレードは意図的なものとなり、偶発的なものにはなりません。

どちらも同じ成果物を解決します。Mavenは宣言型XMLを使用し、固定されたライフサイクルを求めるチームに適しています。 Gradle スクリプト Groovy またはKotlinで、段階的にビルドされるため、大規模なマルチモジュールリポジトリに役立ちます。

src/test/java ディレクトリ内。Surefire はビルド時にそのディレクトリのみをスキャンするため、src/main/java に残されたクラスはコンパイルされますが実行されず、テストスイートが暗黙的に合格しているように見えます。

いいえ。Maven は jar を解決し、テストを実行するだけです。 Appium サーバーを起動し、最初にデバイスまたはエミュレーターを接続するか、テスト設定方法またはCIパイプラインのステップからサーバーを起動します。

リポジトリをチェックして、 Appium サーバーとデバイスをセットアップし、mvn clean test を実行します。 Archiビルド成果物として target/surefire-reports を使用することで、エージェントが破棄された後も障害が読み取れる状態を維持できます。