このセクションの内容:
概要
SOAtest は、Web テストに Selenium WebDriverを使用します。Selenium WebDriver は、各ブラウザーがネイティブにサポートする自動化を使用して、ブラウザーの WebDriver を直接的に呼び出します。SOAtest 2020.1 以前には、ブラウザー シナリオを再生するための Parasoft 固有の実装をサポートする Parasoft レガシーエンジンも同梱されていました。Parasoft レガシーエンジンは SOAtest / Virtualize および CTP 2020.2 で削除されました 。古いバージョンの SOAtest からアップグレードした場合でも、Parasoft レガシー エンジンを使用して再生するように記録および構成された Web シナリオは、多くの場合引き続き機能します。ただし、一部のテストは失敗する可能性があり、更新する必要があります。このトピックでは、Parasoft レガシーエンジンを使用した SOAtest のバージョンからアップグレードした後の Selenium WebDriver エンジンの使用に関する情報を提供します。
アップグレードについての注意事項
このセクションでは、Selenium WebDriver エンジンの使用に関連する変更について説明します。
一般的な注意事項
- [非同期リクエストを待機] 待機条件はサポートされていないため、[トラフィックなしの間隔を待機] 待機条件に置き換える必要があります。非同期リクエストが発生するのに十分な間隔を指定してください。
__No_Name_:#
ウィンドウ形式の識別子はサポートされていません。この形式で記録されたシナリオを再実行し、開きます。ドロップダウン メニューを使用して、正しいウィンドウを指定します。ウィンドウ名またはウィンドウ インデックスを使用してウィンドウを識別できます。
非推奨のブラウザー コマンド
次のコマンドは Parasoft レガシーエンジンで使用可能でしたが、Selenium WebDriver によって置き換えられるか廃止されました。
レガシー コマンド | 置換 |
---|---|
Fireevent Mousedown Mousemove Mouseover Mouseup Type (フォーカスなし) Type Password (フォーカスなし) | N/A - Selenium WebDriver はネイティブ イベントを使用してユーザーの振る舞いをエミュレートします。 |
Keydown Keypress Keyup | Shift 、Control 、および Alt のテキスト入力値のみがサポートされています。他のキー修飾子は不要です。 |
New Browser | N/A - 再生中における 2 番目のブラウザー生成はサポートされていません。 |
Other | N/A - Other および UserCustomizableOptions.js を使用したカスタム コマンドの記述はサポートされていません。 |
非表示の要素とのやり取り
レガシー エンジンは非表示の要素を操作できました。ただし、Selenium WebDriver エンジンは、実際のユーザーをシミュレートしようとし、表示されている要素とのみやり取りします。従来のシナリオが非表示の要素とやり取りする場合は、非表示の要素を使用してシナリオを正常に実行できるように、非表示の要素を表示するための中間ステップを追加します。これを行う最も一般的な方法は、非表示の要素を表示する要素をクリックすることです。
「Unable to perform user action:
Element is not currently visible 」のようなメッセージが表示された場合、シナリオの移行が必要である可能性があります (アプリケーションが期待どおり動作していないことを表す場合もあります)。
相対 URL を使用する検証
レガシー エンジンは href
属性や src
属性を検証する際に相対パスを抽出していました。Selenium WebDriver エンジンは、絶対パスを抽出します。たとえば、http://localhost:8080
ドメインのブラウザーのコンテンツに <a href=”xyz.html”>
があるとします。検証は http:// localhost:8080 / sample / xyz.html
(絶対パス)になります。
「Validation failed for property "href":
Actual value found on the page "http://localhost:8080/sample/xyz.html" must be equal to expected value "xyz.html"」というエラー メッセージが表示された場合、シナリオの移行が必要です。
このメッセージを受け取った場合は、期待値を更新してください。例:
スクリプト ダイアログ アクション
以下のアクションがサポートされています。
- Answeronnextprompt
- Assertalert
- Assertprompt
- Assertconfirmation
- Choosecancelonnextconfirmation
次の対応する Selenium コマンドを使用して、同じアクションを実行します。
- アラートの更新:
Accept Script Dialog
を使ってAssertalert
を置き換えます。 - 確認の更新: ユーザーの操作がダイアログで [OK] をクリックするか [キャンセル] をクリックするかによって、
Accept Script Dialog
またはDismiss Script Dialog
を使用して、Assertconfirmation
を置き換えます。Choosecancelonnextconfirmation
は削除され、不要になりました。 - プロンプトの更新: ユーザー アクションがダイアログで [OK] または [キャンセル] をクリックするかどうかに応じて、
Accept Script Dialog
またはDismiss Script Dialog
を使用して、Assertprompt
およびAnsweronnextprompt
ユーザー アクションを置き換えます。 - 連結/アクションの更新: アラートをトリガーするアクション (たとえば Click ‘alert’) にアタッチされているブラウザー検証ツールは、アラートをトリガーするアクションに続いて、
Accept Script Dialog
またはDismiss Script Dialog
アクションにアタッチする必要があります。
既知の Selenium のバグと問題
- Chrome 28+ および Selenium の chromedriver は RHEL/!CentOS 6.x と互換性がありません。CentOS 7.0 (64-bit) では動作しますが、警告がレポートされます。この警告が表示されないようにするには、コマンドラインで setsebool -P unconfined_chrome_sandbox_transition 0 を指定します。
- Selenium WebDriver でスクリプト ダイアログの [OK] をクリックすると、ランダムに失敗します。このエラーは、テストでダイアログを開き、[スクリプト ダイアログを待機] が指定されたタイムアウト時間内 (デフォルトでは 10 秒) にスクリプト ダイアログが存在しないというエラーをレポートした場合に発生します。この問題を解決するには、待機時間を増やします。詳細については https://groups.google.com/forum/#!topic/selenium-developer-activity/It-RyMNBrpw を参照してください。
- Chrome では、Selenium は Navigate、Go Back または Go Forward アクションによって開かれる onBeforeUnload ダイアログを操作できません。詳細については https://code.google.com/p/chromedriver/issues/detail?id=29 を参照してください。
- Chrome および Internet Explorer では、Selenium は、ブラウザー ウィンドウが 1 つだけ開かれている場合に「Close」を呼び出したときに開かれる onBeforeUnload ダイアログを操作できません。
- Chrome: 詳細については https://code.google.com/p/chromedriver/issues/detail?id=901 を参照してください。
- Internet Explorer: 詳細については https://code.google.com/p/selenium/issues/detail?id=7895 を参照してください。
- Selenium WebDriver は、新しいウィンドウを開いたときに表示されるアラートの [OK] をクリックできません。詳細については https://code.google.com/p/selenium/issues/detail?id=7807 を参照してください。
- Chrome 用のモーダル ダイアログ (JavaScript 関数 "showModalDialog" を使用して開かれるダイアログ) はサポートしていません。この機能に依存する Web アプリケーションは、Internet Explorer または Firefox を使用する必要があります。
- Selenium WebDriver の問題のため、"click" ユーザー アクションのキー修飾子 ("Shift"、"Ctrl" および "Alt") は Chrome でだけサポートされます。詳細については https://code.google.com/p/selenium/issues/detail?id=4385 を参照してください。
- 1 つのユーザー アクションで複数のウィンドウが開かれる場合、Chrome および Internet Explorer では、Selenium WebDriver がウィンドウ ハンドラーを誤った順序で返す可能性があります。この問題は、ウィンドウに名前がない場合にだけ発生します。回避策は、名前付きのウィンドウを使用することです。
- Internet Explorer でエリア要素をクリックできない。詳細については https://code.google.com/p/selenium/issues/detail?id=2354 を参照してください。
- Internet Explorer では、アプリケーションが要素のデフォルトの "fireEvent" 実装を新しい実装でオーバーライドしている場合、Selenium は要素に対してアクションを実行するときに新しい実装をトリガーします。これはブラウザーのデフォルトの動作とは異なります。ブラウザーは、デフォルトでは、Web アプリケーションによって "fireEvent" メソッドの実装が変更されていても、デフォルトの "fireEvent" の実装が呼び出されます。
- Selenium はヘッドレス モードでのシナリオ再生をサポートしません。ヘッドレス モードを選択した場合でも、シナリオは可視モードで再生されます。
新しいバージョンの Selenium WebDriver に手動でアップグレード
新しい SOAtest リリースで利用可能になる前に、SOAtest の Selenium WebDriver バージョンをアップグレードできます。SOAtest に同梱されているバージョンとは異なるバージョンの Selenium WebDriver への変更は、Parasoft によって公式にサポートまたはテストされていません。結果として、新しいバージョンの Selenium WebDriver を実行すると、互換性の問題が発生する場合があります。
アップグレードを行うには、次の操作を行います。
- Selenium クライアントをアップグレードすると、Firefox での再生用の WebDriver サポートもアップグレードされます。このステップは種類に関わらずブラウザーを使用して再生する場合も必須です。詳細は「Upgrading Selenium Client Libraries (Includes Updating WebDriver Support for Firefox)」を参照してください。
- 使用するブラウザー用 (Chrome および/またはインターネット エクスプローラー) の WebDriver 再生サポートをアップグレードします。詳細については下記を参照してください。
Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)
次の手順は、どのブラウザーを使用して再生を行うかにかかわらず、Selenium WebDrive をアップグレードする際は常に最初に行います。Firefox 向け WebDriver サポートは、このプロセスの一部としてアップグレードされます。
- http://search.maven.org に移動します。
- 次の .jar ファイルを検索して maven.org からダウンロードします。
- selenium-api-<version>.jar
- selenium-chrome-driver-<version>.jar
- selenium-firefox-driver-<version>.jar
- selenium-ie-driver-<version>.jar
- selenium-edge-driver-<version>.jar
- selenium-java-<version>.jar
- selenium-remote-driver-<version>.jar
- selenium-support-<version>.jar
- ダウンロードした jar ファイルから <version> 接尾辞を削除します。
- SOAtest テストのインストール ディレクトリで、
-patch
引数およびダウンロードした .jar ファイルのパスを指定して、update.bat
スクリプト (Windows の場合) またはupdate
スクリプト (Linux および Mac の場合) を実行します。このスクリプトを実行すると、現在インストールされているバージョンが patch 引数で指定されたファイルに置き換えられます。また、置き換えられたファイルは、.bak という拡張子を付加してインストール ディレクトリにバックアップされます。- Windows:
update.bat –patch /path/to/[name_of_file].jar
- Linux または Mac:
./update –patch /path/to/[name_of_file].jar
Mac のバージョンによっては、手動で Selenium ドライバーをコピーする必要があります。
- Windows:
上のステップが完了したら、Firefox アドオンのページを開き、バージョン番号をチェックすることで、Selenium WebDriver for Firefox がアップグレードされたことを確認できます。
Chrome 向け WebDriver サポートのアップグレード (ChromeDriver)
Chrome 向け WebDriver サポートをアップグレードするには、次の手順に従って ChromeDriver を更新します。
- まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)」 の手順に従ってアップグレードします。
- 次の ChromeDriver ダウンロード ページに移動します。 http://chromedriver.storage.googleapis.com/index.html
- 最新のリリースをダウンロードします ([ LATEST_RELEASE] リンクをクリックすると、最新のバージョンを参照できます)。
- アーキテクチャに合った ChromeDriver の .zip をダウンロードします。
- Windows 64-bit and 32-bit: chromedriver_win32.zip
- Mac 64-bit and 32-bit: chromedriver_mac32.zip
- Linux 64-bit: chromedriver_linux64.zip
- Linux 32-bit: chromedriver_linux32.zip
- .zip ファイルを解凍して chromedriver.exe を取得します。
- SOAtest テストのインストール ディレクトリで、update.bat スクリプト (Windows の場合) または update スクリプト (Linux および Mac の場合) に -patch 引数および chromedriver.exe ファイルへのパスを指定します。このスクリプトを実行すると、現在インストールされているバージョンが patch 引数で指定されたファイルに置き換えられます。また、置き換えられたファイルは、.bak という拡張子を付加してインストールディレクトリにバックアップされます。
- Windows:
update.bat –patch /path/to/chromedriver.exe
- Linux または Mac:
./update –patch /path/to/chromedriver
- Windows:
Internet Explorer 向け WebDriver サポートのアップグレード (InternetExplorerDriver)
Selenium WebDriver エンジンは、 32-bit 版の Internet Explorer を使用します。カスタムの Internet Explorer 実行可能パス設定(例: [設定]> [ブラウザー]> [IE 実行可能パス])は適用されません。
- まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)」 の手順に従ってアップグレードします。
- Selenium ダウンロード ページ (http://www.seleniumhq.org/download/) に移動し、[Internet Explorer Driver Server] セクションの [32 bit Windows IE] 版をダウンロードします (64 ビット版の Windows を使用している場合でも)。
- .zip ファイルを解凍して IEDriverServer.exe ファイルを取得します。
- SOAtest テストのインストール ディレクトリで、update.bat スクリプト (Windows の場合) または update スクリプト (Linux および Mac の場合) に -patch 引数およびダウンロードした IEDriverServer.exe ファイルへのパスを指定します (例: update.bat -patch /path/to/IEDriverServer.exe)。このスクリプトを実行すると、現在インストールされているバージョンが patch 引数で指定されたファイルに置き換えられます。また、置き換えられたファイルは、.bak という拡張子を付加してインストールディレクトリにバックアップされます。
これで、SOAtest は新しいバージョンの InternetExplorerDriver を使用して再生を行うようになります。
Microsoft Edge 向け WebDriver サポートのアップグレード (EdgeDriver)
- まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)」 の手順に従ってアップグレードします。
- Microsoft WebDriver ダウンロード ページ (https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) に移動し、Edge のバージョンに合ったドライバーをダウンロードします (バージョン サポートの詳細については「ブラウザー サポート」を参照してください)。
- 次のディレクトリにドライバーを保存します。
<SOATEST_INSTALL>\plugins\com.parasoft.ptest.libs.web_<version>\root\browsers\webdriver\edge\x86\
Linux 上で soatestcli を使用した WebDriver ブラウザー シナリオの実行
SOAtest がブラウザー テストを実行する際、テストに使用されるブラウザー (Firefox または Chrome 等) は、別個のプロセスとして起動されます。Linux では、ブラウザー プロセスは X ディスプレイに接続する必要があります。UI から SOAtest を実行している場合は、ブラウザーは SOAtest と同じディスプレイを使用するため、この処理がシームレスに行われます。自動化されたジョブや、物理ディスプレイに接続されていない端末で soatestcli を実行している場合、Selenium WebDriver 再生エンジンを使用するブラウザー シナリオを実行するには、追加操作が必要です。
仮想 X サーバー (Xvfb) を起動してディスプレイを作成
Selenium エンジンは、自動的には Xvfb を使用しませんが 、Xvfb を使用するよう手動で構成できます。Xvfb を使用すると、たとえば、Linux 上で自動化された soatestcli ジョブを使って、Selenium ブラウザー シナリオを表示せずに実行できます。soatestcli を実行するマシンに Xvfb をインストールします (あるいは、SOAtest に付属の Xvfb_Linux を使用することもできますが、適切に動作させるには、オプションを調整する必要がある場合もあります。詳細については「SOAtest とは独立して動く Svfb を取得」を参照してください)。
Xvfb を使用する最も簡単な方法は、すべての SOAtest 実行で使用する 1 つのプロセスを起動することです。それには、次の操作を行います。
- soatestcli を実行するマシンにログインします (ssh などで)。
次のようにコマンドを実行します。
$ nohup Xvfb :99 > /dev/null 2>&1 &
すると、ディスプレイ :99 で Xvfb が開始します。 すべてのログイン情報は破棄されます (/dev/null に送信される)。"nohup" コマンドを使用すると、ログアウトした後も Xvfb プロセスが継続して実行されます。
マシンを再起動するたびに、soatestcli を実行する前に Xvfb プロセスを起動する必要があることに注意してください。手動での起動を避けるには、必要に応じて Xvfb の起動と停止をスクリプト化します。
DISPLAY 環境変数の設定
ブラウザーは、DISPLAY 環境変数を参照して、使用する X ディスプレイを決定します。
環境変数の設定方法は、自動化されたジョブの実行方法の設定によって異なります。重要な点は、Xvfb 起動時に使用したのと同じ値を DISPLAY 変数に設定することです。前の例では、値は ":99" です。
shell スクリプトを作成した場合 (またはサーバーでその都度 soatestcli を実行する必要がある場合)、スクリプトで直接的に変数を設定することができます。 次は bash を使用する場合の例です。
$ DISPLAY=:99 soatestcli ...options...
または
$ export DISPLAY=:99
$ soatestcli ...options...
Jenkins で自動化されたジョブを実行する場合、Jenkins ノードの環境を設定することで、ジョブの DISPLAY 変数を設定できます (この場合、SOAtest ジョブだけでなく、ノードで実行されるすべてのジョブに対して変数が設定されることに注意してください)。次の操作を行います。
- Jenkins の Web ページを表示します。
- ログインします。
- soatestcli が実行される Jenkins ノードをクリックします。
- クリックしてノードを構成します。
- [Node Properties] セクションで、DISPLAY という名前の環境変数を追加し、値を設定します (例: ":99")。