Selenium Java Agentを使用すると、コードに変更を加えることなく、JavaベースのSeleniumテストをmablに移行できます。Selenium Java Agentは、実行時に読み込まれるJVMエージェントであり、RemoteWebDriver
メソッドの呼び出しをインターセプトして、Seleniumアクションをmablアクションに変換します。この記事では、Selenium Java Agentを使用してJavaベースのテストをmablにインポートする方法について説明します。
- APIキーの取得
- エージェントのダウンロード
- エージェントを有効にしたSeleniumテストの実行
- インポートしたmablテストの更新
サポートされているSeleniumバージョン
現在、Selenium Java Agentでは、Selenium 3.xのみがサポートされています。Selenium Java Agentを使用してSelenium 4.xからテストをインポートする必要がある場合は、mablサポートチームまでお問い合わせください。
他のバージョンには、Seleniumプロキシを使用したJavaの移行に記載されているSeleniumプロキシの方法が使用できる可能性があります。
ステップ1: APIキーの取得
Selenium Java Agentを実行するには、mabl APIキーが必要です。
- [APIS] ページにアクセスします ([Settings] > [APIS])。
- [+ Create API Key] をクリックします。
- [Type of API key] で、[Java Selenium Agent] を選択します。
- APIキーの名前を指定します。
APIキーの作成を行えるのは、ワークスペースの所有者に限られます。
ステップ2: エージェントのダウンロード
mabl Selenium Agent jarファイルをこちらからダウンロードします。このjarファイルをC:\mabl\mabl-selenium-agent.jar
(Windows) や~/mabl/mabl-selenium-agent.jar
(Linux/Mac) のような場所に格納します。
ステップ3: エージェントを有効にしたSeleniumテストの実行
JavaベースのSeleniumテストを移行するには、Selenium Java Agentを有効にするJVM引数を追加して、通常と同じようにテストを実行します。
-javaagent:/path/to/mabl-selenium-agent.jar=apiKey=[your-api-key]
たとえば、EclipseのようなIDEを使用してテストを実行する場合は、実行設定を作成または編集し、次のようにJVM引数にエージェントを追加します。
実行設定の画像
Javaバージョン16以降
JVMがバージョン16以降の場合は、-javaagent
引数を指定したのと同じ場所にVM引数を追加します。
--add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.util.stream=ALL-UNNAMED
これらの引数がない場合、次のようなエラーが表示されます。
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private java.util.Spliterator java.util.stream.AbstractPipeline.sourceSpliterator accessible: module java.base does not "opens java.util.stream" to unnamed module
エージェントの引数
エージェントはいくつかのパラメーターを受け入れます。
名前 | 値 | 必須 |
apiKey | 使用するmabl APIキー | はい |
httpProxy | host:portの形式で指定する、mablへの接続に使用するプロキシ | いいえ |
proxyUser | プロキシ認証に使用するユーザー名 | いいえ |
proxyPassword | プロキシ認証に使用するパスワード | いいえ |
name | テストをmablに保存する際に使用する名前 | いいえ |
パラメーターは、キーと値のペアをカンマで区切って渡されます。以下は、複数の引数をエージェントに渡す場合の例です。
-javaagent:/path/to/mabl-selenium-agent.jar=apiKey=your-api-key,httpProxy=proxy.example.com:8080,proxyUser=myuser,proxyPass=mypassword
期待される出力
テストの実行後、エージェントはmablアプリケーションでインポートしたテストへのリンクを以下の例のように出力します。
mabl Selenium Agent - MablAgent version 1.1.1
mabl Selenium Agent - Initializing API client...
mabl Selenium Agent - API client initialized with workspace ID {workspace-id}
{test output here}
mabl Selenium Agent - Imported test 1 with 7 steps
mabl Selenium Agent - Captured 1 test(s)
mabl Selenium Agent - Saving test...
mabl Selenium Agent - https://app.mabl.com/workspaces/{workspace-id}/train/journeys/{test-id}
ステップ4: インポートしたmablテストの更新
次のSeleniumアクションは、インポートセッション中に移行されません。
- アサーション
- 変数
- ファイルのダウンロード
- ファイルのアップロード
- ドラッグアンドドロップアクション
- 条件付きロジック
- ループロジック
- iframe内のエレメントを操作するステップ
- ホバーアクション
- Cookie
移行したテストを正常に機能させるには、次の手順を実行することを強くお勧めします。
欠落しているステップの追加
mablトレーナーでテストを編集します。移行が行われなかった欠落しているステップを追加します。
共通のステップシーケンスでのフローの使用
複数のSeleniumテストをインポートした場合、共通のステップシーケンスをフローとして保存し、移行した他のテストにインポートして、リファクタリング作業の手間を最小限に抑えます。