このセクションの内容:

概要

Selenium は、各ブラウザーがネイティブにサポートする自動化を使用して、ブラウザーを直接的に呼び出します。以下のものを提供します:  

新しく作成されるブラウザー シナリオは、デフォルトで Selenium を使用します。既存のブラウザー シナリオ (WebDriver がサポートされる前に記録されたシナリオ) も、Selenium で再生するよう構成できます (「Selenium での再生用に既存のブラウザー記録シナリオを再構成」の説明を参照)。

Selenium エンジンは、自動的には Xvfb を使用しませんが 、Xvfb を使用するよう手動で構成できます。Xvfb を使用すると、たとえば、Linux 上で自動化された soatestcli ジョブを使って、Selenium ブラウザー シナリオを表示せずに実行できます。詳細については「Linux 上で soatestcli を使用した WebDriver ブラウザー シナリオの実行」を参照してください。

移行の注意点

非推奨のコマンド (および代替コマンド)

非表示の要素を操作するアクションの移行

レガシー エンジンは非表示の要素を操作できます。しかし、Selenium エンジンは実際のユーザーをシミュレートするため、表示されている要素しか操作できません。そのため、既存のシナリオが非表示の要素を操作している場合、Selenium エンジンでシナリオを正しく実行するには、非表示の要素を見えるようにする中間的なステップの追加が必要な可能性があります。これを実現する最も一般的な方法は、非表示の要素を表示する要素をクリックすることです。

「Unable to perform user action: Element is not currently visible 」のようなメッセージが表示された場合、シナリオの移行が必要である可能性があります (アプリケーションが期待どおり動作していないことを表す場合もあります)。 

相対 URL を使用する検証の移行

href または src 属性を検証する際、レガシー ドライバーは URL の相対パスを抽出します (ロケーターに相対パスが指定されている場合)。しかし Selenium エンジンは、相対パスではなく絶対パスを抽出します。たとえば、http://localhost:8080 ドメインのブラウザーのコンテンツに <a href=” 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"」というエラー メッセージが表示された場合、シナリオの移行が必要です。 

シナリオを移行するには、期待値を変更します。たとえば、次のような既存のシナリオがあるとします。 



これを次のように変更します。


非推奨になったスクリプト ダイアログ アクションの移行

ダイアログを処理する以下のアクションは、引き続き使用することはできますが、記録中に作成することはできません。

新しく記録すると、これらのアクションに相当する Selenium コマンド (Accept Script Dialog、Dismiss Script Dialog、Type into Script Dialog等) が使用されます。 

IE、Chrome、Firefox でのアクションの再生を移行

従来のスクリプト ダイアログ アクション (例: Assertalert、Assertconfirmation、Assertprompt) が使用されているシナリオを Selenium エンジンで再生した場合、[スクリプト ダイアログを待機] は適用されません。レガシー エンジンと Selenium エンジンの違いのため、レガシー アクションを Selenium で再生した場合、(テストに [スクリプト ダイアログを待機] 条件が追加されていても) 遅れて開かれるダイアログに対しては、常に「No alert present」というエラーが発生して失敗します。  

Selenium エンジンを使用して新しいスクリプト ダイアログ アクション (Accept Script Dialog、Dismiss Script Dialog) を実行した場合、[スクリプト ダイアログを待機] 条件は期待どおり動作します。 

新しいスクリプト ダイアログ アクションに移行するには、次の操作を行います。

Safari での再生用にアクションを移行

アラートをトリガーするアクションに連結された Browser Validation ツールを Selenium エンジンで再生すると、待機条件がないために正しく動作しない場合があります (従来のスクリプト ダイアログ アクションを使用するシナリオを Seleniium エンジンで再生した場合、[スクリプト ダイアログを待機] が適用されないため)。この場合、Browser Validation ツールを次のアクションに移動します。

Selenium の既知のバグおよび問題点

互換性の問題

Selenium のスクリプト ダイアログの問題

その他の問題点

Safari 固有の問題点

サポートされていないコマンド

以下のコマンドは、Safari の Selenium WebDriver ではサポートされていません。これは、SafariDriver (https://code.google.com/p/selenium/issues/detail?id=4136) の制限によるものです。

サポートされていない機能

Selenium の制限事項により、SOAtest の以下の機能に影響があります。

その他の問題点

Selenium WebDriver を使用した既存のブラウザー記録シナリオの実行

Selenium WebDriver を使用して既存のブラウザー記録シナリオ (9.8 より前のバージョンで作成) を実行する場合、以下の 2 つの選択肢があります。

既存のシナリオには、非推奨になったアクションが含まれている可能性があることに注意してください。その場合、[Selenium を使用して再生する] オプションを選択すると、警告ダイアログが表示されます。このダイアログが表示された場合、シナリオを確認し、必要に応じてアクションを変更してください。詳細については「Selenium の既知のバグおよび問題点」を参照してください。詳細については、「Selenium Known Bugs and Issues」 を参照してください。また、既存のシナリオが beforeunload イベントをトリガーする場合、新しいユーザー アクション (Accept Script Dialog、Dismiss Script Dialog) を追加して、表示されるダイアログに対処する必要があります。

Selenium での再生用に既存のブラウザー記録シナリオを再構成

Selenium WebDriver エンジンを使用して既存の Web シナリオを 実行するには、次の操作を行います。

  1. 変換するシナリオのテスト スイートを開きます。
  2. [ブラウザー再生オプション] タブを開きます。[再生テスト フレームワーク] の [Selenium を使用して再生する] をオンにします。
     

Selenium を使用するテスト コンフィギュレーションの実行

デフォルトでは、テスト コンフィギュレーションはテスト スイート レベルで指定された再生エンジンを使用して Web シナリオを再生するよう設定されています。これによって、Selenium を使用するよう設定されたテストと、レガシー エンジンを使用するよう設定されたテストを、1 つのテスト コンフィギュレーションで実行できます。 

しかし、テスト スイートの再生エンジンの設定を上書きしたいケースもあるかもしれません。たとえば、既存のテスト シナリオを Selenium 用に再構成する前に、Selenium での動作を確認したい場合などです。そのような場合、任意のテスト コンフィギュレーションを Selenium WebDriver エンジンを使用するよう構成して実行できます。このオプションは、[実行] > [機能] タブで設定します。

このコンフィギュレーションを使用して実行したすべてのテストは、テスト シナリオ レベルでのエンジンの設定にかかわらず、Selenium WebDriver を使用して再生されます。

Selenium の代わりに従来のネイティブ ドライバーを使用

特定のシナリオで従来のネイティブ ドライバーを使用する場合は、次の操作を行います。

  1. レガシー エンジンを使用するシナリオのテスト スイートを開きます。
  2. [ブラウザー再生オプション] タブを開きます。[再生テスト フレームワーク] の [Parasoft ネイティブ ドライバー (レガシー)] をオンにします。

     

あるいは、テスト シナリオ レベルでのエンジンの設定にかかわらず、ネイティブ ドライバーで Web シナリオを実行するテスト コンフィギュレーションを作成して適用します。  このオプションは、[実行] > [機能] タブで設定します。

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

SOAtest リリースに組み込まれる前に、新しいバージョンの Selenium WebDriver をアップグレードできます。 ただし、SOAtest に同梱されたバージョンよりも新しいバージョンの Selenium WebDriver を使用することは、Parasoft によって公式にサポートされておらず、検証もされていません。結果として、新しいバージョンの Selenium WebDriver を実行すると、互換性の問題が発生する場合があります。

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

  1. Selenium クライアントをアップグレードします (すると、Firefox での再生用の WebDriver サポートもアップグレードされます)。このステップは、どのブラウザーを使用して再生する場合も必須です。詳細については下記を参照してください。詳細については「Upgrading Selenium Client Libraries (Includes Updating WebDriver Support for Firefox)」を参照してください。
  2. 使用するブラウザー用 (Chrome、Internet Explorer、および/または Safari) の WebDriver 再生サポートをアップグレードします。詳細については下記を参照してください。

Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)

次の手順は、どのブラウザーを使用して再生を行うかにかかわらず、Selenium WebDrive をアップグレードする際は常に最初に行います。Firefox 向け WebDriver サポートは、このプロセスの一部としてアップグレードされます。 

  1. http://search.maven.org に移動します。
  2. maven.org から以下を検索してダウンロードします (それぞれ、[jar] ダウンロード リンクを使用します)。
    • selenium-api-{x.y.z}.jar
    • selenium-chrome-driver-{x.y.z}.jar
    • selenium-firefox-driver-{x.y.z}.jar
    • selenium-ie-driver-{x.y.z}.jar
    • selenium-edge-driver- {x.y.z}.jar
    • selenium-java-{x.y.z}.jar
    • selenium-remote-driver-{x.y.z}.jar
    • selenium-safari-driver-{x.y.z}.jar
    • selenium-support-{x.y.z}.jar



  3. ダウンロードした jar ファイルのバージョン番号 ({x.y.x}) を削除します。たとえば、selenium-api-2.45.0.jar を selenium-api.jar に変更します。
  4. SOAtest テストのインストール ディレクトリで、update.bat スクリプト (Windows の場合) または update スクリプト (Linux および Mac の場合) に -patch 引数および前のステップでダウンロードして名前を変更した各 jar へのパスを指定します。このスクリプトを実行すると、現在インストールされているバージョンが patch 引数で指定されたファイルに置き換えられます。また、置き換えられたファイルは、.bak という拡張子を付加してインストール ディレクトリにバックアップされます。
    • Windows:  update.bat –patch /path/to/[name_of_file].jar
    • Linux または Mac: ./update –patch /path/to/[name_of_file].jarMac のバージョンによっては、手動で Selenium ドライバーをコピーする必要があります。

たとえば、Windows で %DOWNLOADS% ディレクトリにファイルをダウンロードし、スクリプトを実行して selenium-java.jar ファイルをアップグレードすると、次のように出力されます。

c:\Program Files\Parasoft\SOAtest\9.9>update -patch %DOWNLOADS%\selenium-java.jar INFO: Patching file: C:\Program Files\Parasoft\SOAtest\9.9\eclipse\plugins\com.parasoft.xtest.libs.web_9.9.0.20141024\root\lib-java\org.seleniumhq.selenium\selenium-java.jar Update completed successfully


上のステップが完了したら、Firefox アドオンのページを開き、バージョン番号をチェックすることで、Selenium WebDriver for Firefox がアップグレードされたことを確認できます。

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

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

  1. まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)」 の手順に従ってアップグレードします。
  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 and 32-bit: chromedriver_mac32.zip
    • Linux 64-bit: chromedriver_linux64.zip
    • Linux 32-bit: chromedriver_linux32.zip
  5. .zip ファイルを解凍して chromedriver.exe を取得します。
  6. 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

Internet Explorer 向け WebDriver サポートのアップグレード (InternetExplorerDriver)

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

  1. まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)」 の手順に従ってアップグレードします。
  2. Selenium ダウンロード ページ (http://www.seleniumhq.org/download/) に移動し、[Internet Explorer Driver Server] セクションの [32 bit Windows IE] 版をダウンロードします (64 ビット版の Windows を使用している場合でも)。
  3. .zip ファイルを解凍して IEDriverServer.exe ファイルを取得します。
  4. SOAtest テストのインストール ディレクトリで、update.bat スクリプト (Windows の場合) または update スクリプト (Linux および Mac の場合) に -patch 引数およびダウンロードした IEDriverServer.exe ファイルへのパスを指定します (例: update.bat -patch /path/to/IEDriverServer.exe)。このスクリプトを実行すると、現在インストールされているバージョンが patch 引数で指定されたファイルに置き換えられます。また、置き換えられたファイルは、.bak という拡張子を付加してインストールディレクトリにバックアップされます。

これで、SOAtest は新しいバージョンの InternetExplorerDriver を使用して再生を行うようになります。

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

Selenium の SafariDriver は、Safari 10 以降で非推奨です。最新バージョンの Safari にアップグレードし、Apple の SafariDriver を使用してください。Safari をアップグレードできない場合、最新の Safari WebDriver 拡張をダウンロードしてインストールできます。以下の操作を行います。

  1. Safari ブラウザーを開き、Selenium ダウンロード ページ (http://www.seleniumhq.org/download/) に移動します。 
  2. SafariDriver セクションで、SafariDriver.safariextz の最新リリースをダウンロードします。



  3. ダウンロードしたファイルをクリックし、Safari WebDriver 拡張をインストールします。

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

  1. まだ Selenium クライアント ライブラリをアップグレードしていない場合は、「Selenium クライアント ライブラリのアップグレード (Firefox 向け WebDriver サポートの更新を含む)」 の手順に従ってアップグレードします。
  2. Microsoft WebDriver ダウンロード ページ (https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/) に移動し、Edge のバージョンに合ったドライバーをダウンロードします (バージョン サポートの詳細については「ブラウザー サポート」を参照してください)。
  3. 次のディレクトリにドライバーを保存します。

    <SOATEST_INSTALL>\eclipse\plugins\com.parasoft.xtest.libs.web_<version>\root\browsers\webdriver\edge\x86\

Linux 上で soatestcli を使用した WebDriver ブラウザー シナリオの実行

SOAtest がブラウザー テストを実行する際、テストに使用されるブラウザー (Firefox または Chrome 等) は、別個のプロセスとして起動されます。Linux では、ブラウザー プロセスは X ディスプレイに接続する必要があります。UI から SOAtest を実行している場合は、ブラウザーは SOAtest と同じディスプレイを使用するため、この処理がシームレスに行われます。自動化されたジョブや、物理ディスプレイに接続されていない端末で soatestcli を実行している場合、Selenium WebDriver 再生エンジンを使用するブラウザー シナリオを実行するには、追加操作が必要です。 

仮想 X サーバー (Xvfb) を起動してディスプレイを作成

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")。