Seleniumからmablに移行する場合は、mabl CLIを使用して既存のSeleniumテストをmablにインポートできます。mabl CLIでは、すべてのSeleniumフレームワークとプログラミング言語 (Java、Protractor、.NET、Pythonなど) からmablにテストを移行でき、さまざまなブラウザーとランタイム環境 (ローカル/リモート、WebDriver、Selenium Grid、SauceLabs、BrowserStackなど) がサポートされます。
mabl CLIのインポーターツールでは、ビューポートサイズの設定、URLへのナビゲーション、入力フィールドへのテキストの入力、エレメントのクリックといったアクションをインポートできます。それ以外のアクション (アサーション、変数、条件付きロジック、ループロジックなど) はサポートされていません。
Seleniumテストの移行を行う場合は、この記事の末尾にあるテストの更新の手順を実行して、mablテストを正常に機能させるようにしてください。
ステップ1: mabl CLIのインストール
お使いのマシンにmabl CLIがインストールされていない場合は、次のコマンドを実行します。
npm install -g @mablhq/mabl-cli
mabl CLIがすでにインストールされている場合は、次のコマンドを実行して最新バージョンに更新します。
npm install -g @mablhq/mabl-cli@latest
ステップ2: 既存の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());
ステップ3: mabl CLIへのログイン
Seleniumテストを修正した後、mabl CLIにログインします。
mabl auth login
このコマンドを実行すると、mablのログインページがブラウザーウィンドウに表示されます。認証を完了するには、次の手順を実行します。
- 通常の手段 (ユーザー名とパスワード、Google認証システム、またはSSO) を使用してmablにログインします。
- ブラウザーウィンドウから認証コードをコピーします。
- 認証コードをmabl CLIに貼り付けます。
- Enterキーを押すと、ログインが完了します。
ステップ4: テストのインポート
mabl CLIで、mabl tests import selenium
コマンドを使用してインポートセッションを開始します。インポートオプションの一覧を確認するには、CLIでmabl tests import selenium -h
コマンドを実行するか、mabl CLIでのテストのインポートに関する記事を参照してください。
Seleniumテストを実行します。テストが完了するとインポートは自動的に停止します。テストの完了が適切に検出されない場合は、CTRL+Cを押してインポートを終了します。
複数のテストをインポートする場合、mabl CLIが各テストの実行の終了と開始のタイミングを自動的に判断します。インポートしたすべてのテストはmabl内で同じ名前になり、末尾に番号が付けられます。
インポートセッションが終了したら、次のオプションのいずれかを選択します。
- テストの説明を表示する
- テストをローカルで実行する
- テストを保存する
- テストを破棄して終了する
ステップ5: mablでのテストの更新
次のSeleniumアクションは、インポートセッション中に移行されません。
- アサーション
- 変数
- ファイルのダウンロード
- ファイルのアップロード
- ドラッグアンドドロップアクション
- 条件付きロジック
- ループロジック
- iframe内のエレメントを操作するステップ
- ホバーアクション
- Cookie
移行したテストを正常に機能させるには、次の手順を実行することを強くお勧めします。
欠落しているステップの追加
mabl Trainerでテストを編集します。移行が行われなかった欠落しているステップを追加します。
共通のステップシーケンスでのフローの使用
複数のSeleniumテストをインポートした場合、共通のステップシーケンスをフローとして保存し、移行した他のテストにインポートして、リファクタリング作業の手間を最小限に抑えます。