Selenium Java Agentを使用すると、コードに一切変更を加えることなく、JavaベースのSeleniumテストをmablに移行できます。Selenium Java Agentは、実行時に読み込まれてRemoteWebDriverメソッドの呼び出しをインターセプトするJVMエージェントです。Seleniumセッションの詳細な記録をキャプチャし、その記録をmablのクラウドテスト作成エージェントに引き渡します。エージェントは、対応するmablテストを非同期で作成します。
サポートされているSeleniumバージョン
Selenium Java Agentは、Selenium 4.xと、次の長期サポート (LTS) 版のJavaバージョン (11、17、21) をサポートしています。プロジェクトでJava 25以降が必要な場合は、カスタマーサクセスマネージャーにお問い合わせいただくか、mabl Product Portalでリクエストを送信してください。
それより古いバージョンでは、Seleniumからの移行に記載されているSeleniumプロキシの方法が使用できる場合もあります。
ステップ1: APIキーの取得
Selenium Java Agentを実行するには、mabl APIキーが必要です。
- APIページにアクセスします ([設定] > [API])。
- [+ APIキーを作成]をクリックします。
- [APIキーのタイプ]で、「Java Selenium Agent」を選択します。
- APIキーの名前を指定します。
APIキーを作成できるのは、ワークスペースの所有者のみです。
ステップ2: アプリケーション、環境、クレデンシャルをmablに追加する
インポートを実行する前に、アプリケーション、環境、ターゲットURLをmablワークスペースに追加しておいてください。テストでクレデンシャルを使用する場合は、そのクレデンシャルもmablに追加します。
インポートを実行すると、mablエージェントは記録に含まれるURLとクレデンシャルを使用して、mablワークスペース内の一致するエンティティを選択します。
ステップ3: エージェントのダウンロード
mabl Selenium Agentのjarファイルをこちらからダウンロードします。このjarファイルを、Windowsの場合はC:\mabl\mabl-selenium-agent.jar、Linux/Macの場合は~/mabl/mabl-selenium-agent.jarのような場所に格納します。
ステップ4: エージェントを有効にしたSeleniumテストの実行
JavaベースのSeleniumテストを移行するには、Selenium Java Agentを有効にするJVM引数を追加して、通常と同じようにテストを実行します。
-javaagent:/path/to/mabl-selenium-agent.jar=apiKey=[your-api-key]
テストをmablのクレデンシャルのセットにバインドするには、credentialsId引数を追加します。
-javaagent:/path/to/mabl-selenium-agent.jar=apiKey=[your-api-key],credentialsId=[mabl-credentials-id]
たとえば、EclipseのようなIDEを使用してテストを実行する場合は、実行設定 (Run Configuration) を作成または編集し、JVM引数にエージェントを追加します。
起動時のInaccessibleObjectException
エージェントの起動時に次のようなエラーが表示される場合は、
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to ...
お使いのJVMが厳格なモジュールアクセスを使用しています。エージェントに必要なリフレクションアクセスを許可するため、-javaagent引数を指定したのと同じ場所に、次のVM引数を追加します。
--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
ほとんどのJVMでは、デフォルトでこれらの引数は不要になっているため、実際にInaccessibleObjectExceptionが表示された場合にのみ追加してください。
エージェントの引数
エージェントは、いくつかのパラメーターを受け入れます。
| 名前 | 値 | 必須か |
|---|---|---|
apiKey |
使用するmabl APIキー | はい |
name |
テストをmablに保存する際に使用する名前。省略した場合、mablはキャプチャしたセッションからわかりやすい名前を生成します。 | いいえ |
plan |
テストの作成前に、キャプチャしたセッションをテスト計画エージェントに通すかどうか。デフォルトはtrueです。falseに設定すると、キャプチャしたセッションがテスト作成エージェントに直接送信されます (処理は速くなりますが、ワークスペースのコンテキストは少なくなります)。 |
いいえ |
saveOnFailure |
デフォルトでは、テストフレームワークが失敗を報告した場合、キャプチャしたセッションはmablに送信されません。失敗した実行は、インポートしたいテストであることはまれです。失敗したセッションでも送信するには、trueに設定します。デフォルトはfalseです。 |
いいえ |
captureAssertions |
JUnit 4、JUnit 5、TestNG、Hamcrestのassert*およびfailの呼び出しを、テスト作成エージェントへのヒントとしてキャプチャするかどうか。デフォルトはtrueです。 |
いいえ |
useLink |
mabl Linkエージェント用に構成されたアプリケーションや環境を、プランナーが優先的に選択するようにします。デフォルトはfalseです。テスト対象のアプリケーションがLinkエージェントの接続を必要とする場合、それが記録から明らかでなくても、trueに設定します。 |
いいえ |
credentialsId |
インポートしたテストにバインドするワークスペースのクレデンシャルID。キャプチャしたログインがVaultや環境固有の設定からシークレットを取得し、それがどのmablクレデンシャルとも一致しない場合に使用します。これを指定しないと、プランナーはどのクレデンシャルを選択すべきかを判断する手がかりを得られません。 | いいえ |
save |
キャプチャしたセッションをmablに送信するかどうか。デフォルトはtrueです。falseに設定すると、キャプチャしたセッションのJSONが送信されずにログに出力されます。エージェントがキャプチャした内容を確認するのに役立ちます。 |
いいえ |
debug |
エージェントの詳細なログ出力を有効にします。デフォルトはfalseです。 |
いいえ |
config |
上記のいずれかのキーを含むJavaの.propertiesファイルへのパスまたはhttps://URL。エージェント引数として指定した値は、ファイル内の値よりも優先されます。apiKeyをargLineの外に保つのに役立ちます。 |
いいえ |
httpProxy |
mablへの接続に使用するプロキシ。host:portの形式で指定します。 |
いいえ |
proxyUser |
プロキシ認証に使用するユーザー名 | いいえ |
proxyPassword |
プロキシ認証に使用するパスワード | いいえ |
パラメーターは、コンマで区切られたキーと値のペアとして渡します。次の例は、複数の引数をエージェントに渡す方法を示しています。
-javaagent:/path/to/mabl-selenium-agent.jar=apiKey=[your-api-key],name=CheckoutHappyPath,useLink=true
期待される出力
テストの実行後、エージェントはキャプチャした各セッションをmablのクラウドテスト作成エージェントに送信し、実行中のテスト作成セッションへのリンクを出力します。このリンクから、テストが作成される様子をリアルタイムで確認できます。テストの作成が完了すると、できあがったテストがワークスペースに表示されます。
mabl Selenium Agent - MablAgent version 2.0.0
mabl Selenium Agent - Initializing API client...
mabl Selenium Agent - API client initialized with workspace ID {workspace-id}
{test output here}
mabl Selenium Agent - Captured 1 session(s)
mabl Selenium Agent - Submitting session to mabl for test generation...
mabl Selenium Agent - Test authoring session initiated: session={session-id} instance={instance-id}
mabl Selenium Agent - https://app.mabl.com/workspaces/{workspace-id}/agents/tasks/{session-id}インポートは非同期で行われます。エージェントは、クラウドでのテスト作成セッションが開始された時点で処理を返し、テストの作成が完了するまで待機してブロックすることはありません。
ステップ5: インポートしたmablテストの確認
クラウドテスト作成エージェントは、キャプチャしたSeleniumセッションから、アサーション (captureAssertionsが有効な場合)、変数、待機を含む完全なmablテストを作成します。それでも、テストの作成が完了した後にテストを確認することをお勧めします。
アプリケーションと環境の確認
テストがmabl内で正しいアプリケーション、環境、および (使用している場合は) クレデンシャルを選択していることを確認します。キャプチャした実行がサードパーティのIDプロバイダーのページから始まっていたり、複数のホストにアクセスしていたりした場合は、テストがmabl内の適切なアプリケーション/環境にバインドされているかどうかを再確認してください。
記録から見えなかった要素の追加
一部の要素は本質的にエージェントからは見えないため、テストの作成後に手動で追加する必要がある場合があります。
- ファイルのダウンロードとアップロード
- ドラッグアンドドロップアクション
- ホバーアクション
- iframe 内のエレメントを操作するステップ
- Cookieの検査
テストに必要なこれらの要素を追加するには、mablトレーナーでテストを編集してください。
共通のステップシーケンスでのフローの使用
共通のステップシーケンスを含む複数のSeleniumテストをインポートする場合は、フローを追加することで、全体のリファクタリング作業を最小限に抑えられます。
- 共通のステップシーケンスを含むテストの初期サブセットをインポートします。
- それらの共通のステップを手動で編集し、再利用可能なフローに変換します。
- 残りのテストをインポートします。以降のインポートでは、今作成したフローを利用できます。