このセクションの内容:

概要

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

ShiftControl、および Alt のテキスト入力値のみがサポートされています。他のキー修飾子は不要です。

New Browser

N/A - 再生中における 2 番目のブラウザー生成はサポートされていません。
OtherN/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 では、Selenium は、ブラウザー ウィンドウが 1 つだけ開かれている場合に「Close」を呼び出したときに開かれる onBeforeUnload ダイアログを操作できません。
  • Selenium WebDriver は、新しいウィンドウを開いたときに表示されるアラートの [OK] をクリックできません。詳細については https://code.google.com/p/selenium/issues/detail?id=7807 を参照してください。
  • Chrome 用のモーダル ダイアログ (JavaScript 関数 "showModalDialog" を使用して開かれるダイアログ) はサポートしていません。この機能に依存する Web アプリケーションは、Firefox を使用する必要があります。 
  • Selenium WebDriver の問題のため、"click" ユーザー アクションのキー修飾子 ("Shift"、"Ctrl" および "Alt") は Chrome でだけサポートされます。詳細については https://code.google.com/p/selenium/issues/detail?id=4385 を参照してください。 
  • 1 つのユーザー アクションで複数のウィンドウが開かれる場合、Chrome では、Selenium WebDriver がウィンドウ ハンドラーを誤った順序で返す可能性があります。この問題は、ウィンドウに名前がない場合にだけ発生します。回避策は、名前付きのウィンドウを使用することです。 
  • Selenium はヘッドレス モードでのシナリオ再生をサポートしません。ヘッドレス モードを選択した場合でも、シナリオは可視モードで再生されます。

既知の Safari の問題

  • シナリオ再生時にトラフィックが記録されません。
  • NTLM/ダイジェスト/ベーシック認証はサポートされていません。
  • [負荷テスト用に構成/検証] はサポートされていません。
  • HTTP トラフィックへのツールの連結はサポートされていません。
  • [HTTP トラフィックなしの間隔を待機] 待機条件は、ブラウザーまたはサーバーによってトラフィックが送信されたかどうかにかかわらず、指定された時間が経過すると常に成功します。
  • [非同期リクエストを待機] 待機条件は動作しません。
  • 信頼されていない証明書を使用するサイトはサポートされていません。
  • Safari で複数のウィンドウまたはフレームを切り替えると、テストが不安定になることがあります。

新しいバージョンの Selenium WebDriver に手動でアップグレード

新しい SOAtest リリースで利用可能になる前に、SOAtest の Selenium WebDriver バージョンをアップグレードできます。SOAtest に同梱されているバージョンとは異なるバージョンの Selenium WebDriver への変更は、Parasoft によって公式にサポートまたはテストされていません。結果として、新しいバージョンの Selenium WebDriver を実行すると、互換性の問題が発生する場合があります。

アップグレードを行うには、次の操作を行います。

  1. Selenium クライアントをアップグレードすると、Firefox での再生用の WebDriver サポートもアップグレードされます。このステップは種類に関わらずブラウザーを使用して再生する場合も必須です。詳細については「Firefox 向け WebDriver サポートのアップグレード (GeckoDriver)」を参照してください。
  2. 使用するブラウザー用の WebDriver 再生サポートをアップグレードします。詳細については下記を参照してください。

Firefox 向け WebDriver サポートのアップグレード (GeckoDriver)

Firefox 向け WebDriver サポートをアップグレードするには、次の手順に従って GeckoDriver を更新します。

  1. 次の GeckoDriver ダウンロード ページに移動します。 https://github.com/mozilla/geckodriver/releases
  2. ご使用のアーキテクチャに合った GeckoDriver をダウンロードします。
    1. Windows 64-bit および 32-bit: geckodriver-<version>-win64.zip
    2. Mac 64-bit: geckodriver-<version>-macos.tar.gz
    3. Linux 64-bit: geckodriver-<version>-linux64.tar.gz
  3. .zip ファイルを解凍して geckodriver の実行可能ファイルを取得します。
  4. SOAtest テストのインストール ディレクトリで、update.bat スクリプト (Windows の場合) または update スクリプト (Linux および Mac の場合) に -patch 引数および geckodriver 実行可能ファイルへのパスを指定します。このスクリプトを実行すると、現在インストールされているバージョンが patch 引数で指定されたファイルに置き換えられます。また、置き換えられたファイルは、.bak という拡張子を付加してインストールディレクトリにバックアップされます。
    • Windows: update.bat –patch /path/to/geckodriver.exe
    • Linux または Mac: ./update –patch /path/to/geckodriver

Chrome 向け WebDriver サポートのアップグレード (ChromeDriver)

Chrome 向け WebDriver サポートをアップグレードするには、次の手順に従って ChromeDriver を更新します。

  1. まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Firefox 向け WebDriver サポートのアップグレード (GeckoDriver)」 の手順に従ってアップグレードします。
  2. 次の ChromeDriver ダウンロード ページに移動します。 http://chromedriver.storage.googleapis.com/index.html
  3. 最新のリリースをダウンロードします ([ LATEST_RELEASE] リンクをクリックすると、最新のバージョンを参照できます)。
  4. アーキテクチャに合った ChromeDriver の .zip をダウンロードします。
    • Windows 64-bit and 32-bit: chromedriver_win32.zip
    • Mac 64-bit: chromedriver_mac64.zip
    • Linux 64-bit: chromedriver_linux64.zip
  5. .zip ファイルを解凍して chromedriver の実行可能ファイルを取得します。
  6. SOAtest テストのインストール ディレクトリで、update.bat スクリプト (Windows の場合) または update スクリプト (Linux および Mac の場合) に -patch 引数および chromedriver 実行可能ファイルへのパスを指定します。このスクリプトを実行すると、現在インストールされているバージョンが patch 引数で指定されたファイルに置き換えられます。また、置き換えられたファイルは、.bak という拡張子を付加してインストールディレクトリにバックアップされます。
    • Windows: update.bat –patch /path/to/chromedriver.exe
    • Linux または Mac: ./update –patch /path/to/chromedriver

Microsoft Edge 向け WebDriver サポートのアップグレード (EdgeDriver)

Microsoft Edge 向け WebDriver サポートをアップグレードするには、次の手順に従って EdgeDriver を更新します。

  1. まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Firefox 向け WebDriver サポートのアップグレード (GeckoDriver)」 の手順に従ってアップグレードします。
  2. Microsoft WebDriver ダウンロード ページ (https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) に移動し、Edge のバージョンに合ったドライバーをダウンロードします (バージョン サポートの詳細については「ブラウザー サポート」を参照してください)。
  3. ご使用の OS に適したディレクトリにドライバを保存してください。
    • Windows: <SOATEST_INSTALL>\plugins\com.parasoft.ptest.libs.web_<version>\root\browsers\webdriver\edge\windows\x86
    • Linux: <SOATEST_INSTALL>\plugins\com.parasoft.ptest.libs.web_<version>\root\browsers\webdriver\edge\linux\x86_64
    • MacOS: <SOATEST_INSTALL>\plugins\com.parasoft.ptest.libs.web_<version>\root\browsers\webdriver\edge\mac\x86_64

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 つのプロセスを起動することです。それには、次の操作を行います。

  1. soatestcli を実行するマシンにログインします (ssh などで)。
  2. 次のようにコマンドを実行します。
    $ 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 ジョブだけでなく、ノードで実行されるすべてのジョブに対して変数が設定されることに注意してください)。次の操作を行います。

  1. Jenkins の Web ページを表示します。
  2. ログインします。
  3. soatestcli が実行される Jenkins ノードをクリックします。
  4. クリックしてノードを構成します。
  5. [Node Properties] セクションで、DISPLAY という名前の環境変数を追加し、値を設定します (例: ":99")。
  • No labels