Seleniumからmablに移行する場合は、mabl CLIを使用して、既存のSeleniumテストをmablにインポートできます。mabl CLIは、Java、Protractor、.NET、Pythonなど、すべてのSeleniumフレームワークおよびプログラミング言語からmablにテストを移行でき、ローカル/リモート、WebDriver、Selenium Grid、SauceLabs、BrowserStackなど、さまざまなブラウザーとランタイム環境をサポートしています。
mabl CLIは、SeleniumテストとSeleniumサーバーの間でローカルプロキシを実行してWebDriverセッションをキャプチャし、そのキャプチャをmablのクラウドテスト作成エージェントに引き渡します。エージェントは、対応するmablテストを非同期で作成します。
開始する前に
クラウドテスト作成エージェントは、キャプチャしたセッションから、アサーション、変数、待機を含む完全なmablテストを作成します。CLIはプロキシを介してセッションをキャプチャするため、認識できるのはWebDriverのトラフィックのみです。一部の要素はプロキシからは見えないため、テストの作成後に手動で追加する必要がある場合があります (後述のステップ5を参照)。特に、ブラウザーに到達しないassertEquals呼び出しのようなプロセス内アサーションはプロキシでキャプチャされません。テストの意図がこれらに依存している場合は、代わりにSelenium Java Agentを使用してください。
ステップ1: mabl CLIのインストール
お使いのマシンにmabl CLIがインストールされていない場合は、次のコマンドを実行します。
npm install -g @mablhq/mabl-cli
ステップ2: アプリケーション、環境、クレデンシャルをmablに追加する
インポートを実行する前に、アプリケーション、環境、ターゲットURLをmablワークスペースに追加しておいてください。テストでクレデンシャルを使用する場合は、そのクレデンシャルもmablに追加します。
インポートを実行すると、mablエージェントは記録に含まれるURLとクレデンシャルを使用して、mablワークスペース内の一致するエンティティを選択します。
ステップ3: 既存のSeleniumテストの修正
mabl CLI内で実行されるプロキシがSeleniumのトラフィックをリッスンできるように、テストの設定を少し変更します。必要な変更内容は、使用するプログラミング言語とSeleniumフレームワークによって異なります。
mablへの移行に対応した修正済みのSeleniumテストの例については、このGitHubリポジトリを参照してください。
Java
JavaベースのSeleniumテストをmablに移行するには、次のいずれかの方法を使用します。
- Selenium Java Agent: この方法では、Javaコードを変更する必要がありません。Selenium Java Agentを使用してSeleniumの移行プロセスを続行するには、こちらの記事に進んで詳しい手順を確認してください。
-
Seleniumプロキシを使用したJavaの移行: 言語に依存しないテスト移行方法です。インポート例はこちらを参照してください。プロキシを使用するように構成したカスタムの
HttpClientFactoryを使って、RemoteWebDriverインスタンスを作成します。
Protractor
Protractor Seleniumのインポート例はこちらを参照してください。
ProtractorベースのSeleniumテストをmablに移行するには、Protractorの設定ファイルに次の設定を追加します。
webDriverProxy: 'http://localhost:8889',
Ruby
Ruby Seleniumのインポート例はこちらを参照してください。
リモートWebDriverクライアント内でプロキシを構成します。「http://localhost:9515」は、お使いのリモートWebDriverまたはSelenium GridのURLに置き換えてください。
client = Selenium::WebDriver::Remote::Http::Default.new
client.proxy = Selenium::WebDriver::Proxy.new(http: "http://localhost:8889")
driver = Selenium::WebDriver.for :remote, http_client: client, url: "http://localhost:9515"
C
C# Seleniumのインポート例はこちらを参照してください。
リモートWebDriverクライアント内でプロキシを構成します。「http://localhost:9515」は、お使いのリモートWebDriverまたはSelenium GridのURLに置き換えてください。
ChromeOptions options = new ChromeOptions();
var p = new WebProxy("http://localhost:8889/");
HttpCommandExecutor commandExecutor = new HttpCommandExecutor(new Uri("http://localhost:9515"), TimeSpan.FromSeconds(600));
commandExecutor.Proxy = p;
RemoteWebDriver driver = new(commandExecutor, options.ToCapabilities());
ステップ4: mabl CLIへのログイン
Seleniumテストを修正した後、mabl CLIにログインします。
mabl auth login --auto
このコマンドを実行すると、mabl CLIによってブラウザーウィンドウにmablのログインページが開きます。通常の方法 (ユーザー名とパスワード、Google認証、またはSSO) を使用してmablにログインしてください。mabl CLIが認証コードをブラウザーウィンドウから自動的にコピーし、ターミナルウィンドウに貼り付けてログインを完了します。
ステップ5: テストのインポート
mabl CLIで、mabl tests import seleniumコマンドを使用してインポートセッションを開始します。次に例を示します。
# Importing a test with mabl credentials
mabl tests import selenium --credentialsId [mabl-credentials-id]
インポートオプションの一覧を確認するには、CLIでmabl tests import selenium -hを実行するか、mabl CLIでのテストのインポートに関する参照記事を参照してください。
CLIはプロキシを起動し、テストを待機します。
Configure your test to use a selenium proxy at localhost:8889 and run the test now.
Import will end automatically when the Selenium session is closed or CTRL+C is pressed
Seleniumテストを実行します。CLIはセッションをキャプチャし、テストが完了すると自動的に停止します。この終了が適切に検出されない場合は、CTRL+Cを押すといつでもインポートを終了できます。
キャプチャが終了すると、CLIは引き渡しの確認を求めるプロンプトを表示します。
? Submit 1 captured session to mabl for test authoring? (Y/n)
Yを入力すると、キャプチャしたセッションがmablのクラウドテスト作成エージェントに送信されます。続いて、CLIは実行中のテスト作成セッションへのリンクを出力します。
Submitting session to mabl for test generation (planning enabled)...
Test authoring session initiated: session={session-id} instance={instance-id}
https://app.mabl.com/workspaces/{workspace-id}/agents/tasks/{session-id}
リンクを開くと、テストが作成される様子をリアルタイムで確認できます。インポートは非同期で行われます。CLIは、テスト作成セッションが開始された時点で処理を返し、テストが完了するまで待機してブロックすることはありません。テストの作成が完了すると、できあがったテストがワークスペースに表示されます。
プロンプトをスキップして自動的に送信するには (スクリプトやCIで役立ちます)、--auto-saveを渡します。
複数のテストのインポート
--multiを使用すると、1回のセッションで複数のテストをインポートできます。プロキシは、CTRL+Cを押すまで複数のSeleniumセッションにわたってリッスンを続けます。--nameを渡さない場合、mablはキャプチャしたセッションから各テストにわかりやすい名前を生成します。
ステップ6: インポートしたテストの確認
クラウドテスト作成エージェントは、キャプチャしたSeleniumセッションから、アサーション、変数、待機を含む完全なmablテストを作成します。それでも、テストの作成が完了した後にテストを確認することをお勧めします。
アプリケーションと環境の確認
テストがmabl内で正しいアプリケーション、環境、および (使用している場合は) クレデンシャルを選択していることを確認します。キャプチャした実行がサードパーティのIDプロバイダーのページから始まっていたり、複数のホストにアクセスしていたりした場合は、テストがmabl内の適切なアプリケーション/環境にバインドされているかどうかを再確認してください。
記録から見えなかった要素の追加
一部のアクションは本質的にプロキシからは見えないため、テストの作成後に手動で追加する必要がある場合があります。
- テストプロセス内で行われるアサーション (プロキシはWebDriverのトラフィックのみを認識し、プロセス内の
assertEquals呼び出しは認識しません。テストの意図がプロセス内のアサーションに依存している場合は、Selenium Java Agentを使用してください) - ファイルのダウンロードとアップロード
- ドラッグアンドドロップアクション
- ホバーアクション
- iframe 内のエレメントを操作するステップ
- Cookieの検査
テストに必要なこれらの要素を追加するには、mablトレーナーでテストを編集してください。
共通のステップシーケンスでのフローの使用
共通のステップシーケンスを含む複数のSeleniumテストをインポートする場合は、フローを追加することで、全体のリファクタリング作業を最小限に抑えられます。
- 共通のステップシーケンスを含むテストの初期サブセットをインポートします。
- それらの共通のステップを手動で編集し、再利用可能なフローに変換します。
- 残りのテストをインポートします。以降のインポートでは、今作成したフローを利用できます。