これは、WebDriver プロトコルに準拠する Appium テストを作成するための Java 言語バインディングです。
v9 以降、クライアントは Java 11 以降のみをサポートします。 v8 から v9 への移行ガイドに従って、移行プロセスを合理化します。
バージョン 8 以降、Appium Java クライアントにはいくつかの大きな変更があり、クライアント コードの更新が必要になる場合があります。移行プロセスを合理化するために、v7 から v8 への移行ガイドに従ってください。
以下を pom.xml に追加します。
< dependency >
< groupId >io.appium</ groupId >
< artifactId >java-client</ artifactId >
< version >${version.you.require}</ version >
< scope >test</ scope >
</ dependency >
以下を build.gradle に追加します。
dependencies {
testImplementation ' io.appium:java-client:${version.you.require} '
}
Java クライアント プロジェクトは、Maven Central に正式に公開される前でも使用できます。 jitpack.ioを参照
以下を pom.xml に追加します。
< repositories >
< repository >
< id >jitpack.io</ id >
< url >https://jitpack.io</ url >
</ repository >
</ repositories >
依存関係を追加します。
< dependency >
< groupId >com.github.appium</ groupId >
< artifactId >java-client</ artifactId >
< version >latest commit ID from master branch</ version >
</ dependency >
JitPack リポジトリをビルド ファイルに追加します。これをリポジトリの最後にあるルート build.gradle に追加します。
allprojects {
repositories {
// ...
maven { url ' https://jitpack.io ' }
}
}
依存関係を追加します。
dependencies {
implementation ' com.github.appium:java-client:latest commit id from master branch '
}
Appium Java クライアント | Seleniumクライアント |
---|---|
9.2.1 (既知の問題: 9.2.3 2145、# 9.3.0 )、 9.2.2 | 4.19.0 4.19.1 4.20.0 4.21.0 4.22.0 4.23.0 |
9.1.0 9.2.0 | 4.17.0 4.18.0 4.18.1 |
9.0.0 | 4.14.1 (部分的4.16.0 破損) 4.16.1 4.15.0 |
該当なし | 4.14.0 |
8.5.0 8.5.1 8.6.0 | 4.9.1 (既知の問題: 4.10.0 4.12.1 4.13.0 4.11.0 4.12.0 |
8.4.0 | 4.8.2 4.8.3 4.9.0 |
8.3.0 | 4.7.0 4.7.1 4.7.2 4.8.0 4.8.1 |
8.2.1 | 4.5.0 4.5.1 4.5.2 4.5.3 4.6.0 |
Selenium クライアントはセマンティック バージョニングに従っていないため、パッチでも重大な変更が導入される可能性があり、それに応じて Appium チームが Java クライアントを更新する必要があります。
Appium Java クライアントは、ビルド ツールごとに異なる方法で処理されるオープン バージョン範囲を使用して Selenium の依存関係を宣言します。場合によっては、ユーザーはさまざまな理由で、使用されている Selenium の依存関係を固定したい場合があります。 Java テスト フレームワークの固定 Selenium バージョンの確立の詳細については、「推移的な依存関係管理」の記事を参照してください。
Appium Java クライアントには、次の Appium ドライバーをサポートする専用のクラスがあります。
上記にリストされていない他のプラットフォームを自動化するには、AppiumDriver またはそのカスタム派生物を使用できます。
Appium Java クライアントは Selenium 上に構築され、基盤の RemoteWebDriver と同じインターフェイスを実装します。ただし、Selenium lib は Web ブラウザの自動化に主に焦点を当てているのに対し、Appium はユニバーサルであり、モバイルおよびデスクトップ オペレーティング システム、IoT デバイスなど、考えられる幅広いプラットフォームをカバーしています。 したがって、このパッケージの基礎となるAppiumDriver
クラスは追加機能でRemoteWebDriver
拡張します。 、より柔軟になるため、Web ブラウザー関連の操作にはあまり厳密に焦点を当てていません。
Appium Java クライアントは、Appium サーバーの実行を制御するための専用クラスを提供します。クラスは AppiumDriverLocalService です。これにより、テスト フレームワーク コードからローカルでAppium サーバーを実行して検証できるようになり、いくつかの便利なショートカットが提供されます。このサービスは次のように使用できます。
AppiumDriverLocalService service = AppiumDriverLocalService . buildDefaultService ();
service . start ();
try {
// do stuff with drivers
} finally {
service . stop ();
}
サービスの動作をカスタマイズできます。たとえば、カスタム コマンド ライン引数を指定したり、AppiumServiceBuilder を使用してサーバー実行可能ファイルへのパスを変更したりできます。
注記
AppiumDriverLocalService は、ローカル以外のホストでのサーバー管理をサポートしていません
UiAutomator2Options options = new UiAutomator2Options ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.apk" );
AndroidDriver driver = new AndroidDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . xpath ( "//Button" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
XCUITestOptions options = new XCUITestOptions ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.ipa" );
IOSDriver driver = new IOSDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . accessibilityId ( "myId" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
BaseOptions options = new BaseOptions ()
. setPlatformName ( "myplatform" )
. setAutomationName ( "mydriver" )
. amend ( "mycapability1" , "capvalue1" )
. amend ( "mycapability2" , "capvalue2" );
AppiumDriver driver = new AppiumDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . className ( "myClass" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
対応するドライバーの README を確認して、サポートされる機能のリストを確認してください。
クライアントの単体テストと統合テストをチェックすると、さらに多くのコード例を見つけることができます。
Appium Java クライアントは、他のモジュールのプライベート メンバーへのリフレクティブ アクセスを使用して、ページ オブジェクト モデルなどのいくつかの機能が適切に機能することを保証します。ランタイム例外が発生し、 InaccessibleObjectException
スタック トレースに存在し、Java ランタイムがバージョン 16 以降である場合は、次の Oracle のチュートリアルを検討するか、既存の問題を確認して解決策を確認してください。 --add-exports/--add-opens
コマンド ライン引数を使用して、特定のモジュールへのアクセスを明示的に許可するというアイデアがあります。
もう 1 つの可能性はありますが、あまりお勧めできない解決策は、Java をバージョン 15 以下にダウングレードすることです。
このような問題は通常、Appium サーバーがスクリプトまたは手動で個別に実行されるのではなく、フレームワーク コードから直接起動される場合に発生します。サーバープロセスの起動方法に応じて、現在アクティブなシェル環境を継承する場合と継承しない場合があります。そのため、これらの変数がコマンド ライン インタープリター用に定義されている場合でも、変数の存在に関するエラーが発生する可能性があります。繰り返しになりますが、新しいサーバー プロセスを起動するにはさまざまな方法があるため、これに対する普遍的な解決策はありません。プロセス環境の問題をデバッグおよび修正する方法の詳細については、Appium 環境のトラブルシューティング ドキュメントを確認することを検討してください。
バージョン間の変更点の完全なリストを確認するには、CHANGELOG.md にアクセスしてください。
を使用してテストを実行します
gradle clean -Dtest.single=IOSAlertTest テスト