Selenium スクリプトの実行

Silk4J を使用して Selenium WebDriver スクリプトを実行すると、テスト実行中に同期を使用したり、TrueLog を作成することができます。Open Agent を実行しているマシン上でブラウザーの種類をケイパビリティ(Capabilities)で指定し、RemoteWebDriver を作成して Open Agent 上で実行している Selenium サーバーに接続する場合は、Silk4J は自動的に対応するブラウザーを起動します。ブラウザーの種類が指定されていない場合、Open Agent は、あらかじめ Silk4J の基本状態の実行によって起動されたブラウザーなど、既存のブラウザー インスタンスを再利用しようとします。

Selenium スクリプトの実行中に、実行をビジュアル化する TrueLog ファイルを生成するには、「Silk Test TrueLog API for Selenium WebDriver」を使用できます。この API は REST インターフェイスとして実装されており、この API によって使用されるエンドポイント ホストとポートは、Selenium サーバーによって使用されるものと同じです。たとえば、http://localhost:4444/silktest/truelog のようになります。

REST API ファイルは、Silk Test インストール フォルダの \ng\TrueLogAPI\ にあります。
  • SilkTestTrueLogService-doc.html ファイルは、REST API のドキュメントです。
  • SilkTestTrueLogService.yaml ファイルは、REST API の宣言です。
  • trueLogApiClient.jar ファイルは、REST API の Java クライアントです。

REST API 宣言ファイルを Swagger Editor にインポートして、エディタの Generate Client 機能を使用すると、宣言ファイルを変更をせずに、Python、Ruby、JavaScript、C# などのさまざまな言語のクライアント API ライブラリを生成できます。そして、選択したプログラム言語の TrueLog API をダウンロードできます。

Silk4J を使用して、次のブラウザーに対して Selenium スクリプトを実行できます。
  • Google Chrome
  • Microsoft Edge
  • Mozilla Firefox
  • Apple Safari
  1. Silk4J をインストールしたマシンで Open Agent を開始します。
  2. アプリケーションをテストするブラウザーを開始します。
    • Google ChromeMicrosoft EdgeMozilla Firefox の場合、WebDriver のデフォルトのケイパビリティを使用して、ブラウザーを開始できます。たとえば、次のコードで示すように、Java バインディングを使用して Google Chrome を開始できます。
      RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome());
    • Apple Safari の場合、次のコードで示すように、カスタム ブラウザー名をケイパビリティとして指定する必要があります。
      DesiredCapabilities safari = new DesiredCapabilities();
       safari.setCapability("browserName", "SilkSafari");
  3. 省略可能:追加のオプションをケイパビリティとして渡します。 Silk4J のカスタム オプションは、silkTestOptions というケイパビリティ名を持つマップとして渡します。 たとえば、次のサンプル コードは、syncEnabled オプションを設定し、Selenium での自動同期を有効化する方法を示しています。
    Map<String, Object> options = new HashMap<>();
    options.put( "syncEnabled" , true);
    capabilities.setCapability( "silkTestOptions" , options);
    以下のオプションを利用できます。
    オプション 説明
    commandLineArguments String 起動するブラウザーに渡すコマンドライン引数を指定します。
    connectionString String リモート マシン上で実行するブラウザーの接続文字列を指定します。
    startUrl String ブラウザーの起動時に移動する URL を指定します。
    syncEnabled boolean Silk Test AJAX 同期の有効/無効を指定します。デフォルト値は、false です。
    trueLogEnabled boolean このオプションを使用して、TrueLog の有効/無効を指定します。デフォルト値は、true です。
    trueLogId String TrueLog API の StartTrueLog メソッド呼び出し時に返される TrueLog セッションの識別子です。Open Agent に対して WebDriver 操作を含める TrueLog を指定する場合に、この識別子が必要になります。
    trueLogPath String カスタム TrueLog ファイルのパスを指定します。デフォルトでは、Silk Test のログ ディレクトリである %LOCALAPPDATA%\Silk\SilkTest\logs の下に TrueLog は出力されます。
    trueLogScreenshotMode String スクリーンショットを TrueLog に追加するモードを指定します。
    OnError
    エラーが発生したときに、スクリーンショットが TrueLog に追加されます。
    always
    各操作に対して、スクリーンショットが TrueLog に追加されます。
  4. 省略可能:Selenium サーバーが使用するポートを指定するには、次の設定を行います。
    1. %APPDATA%\Silk\SilkTest\conf に移動します。
    2. Selenium.properties という名前の新しいプロパティ ファイルを作成します。
    3. 新しいファイルに、selenium.server.port=<port name> を入力します。
次のサンプル コードは、Selenium Java バインディングを使用して、同期をオンにして Google Chrome を開始します。
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Map<String, Object> options = new HashMap<>();
options.put("syncEnabled", true);
capabilities.setCapability("silkTestOptions", options);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);
次のサンプル コードは、Selenium Java バインディングを使用して、Open Agent に対して TrueLog ファイルを指定して Google Chrome を開始します。
TrueLogAPI truelogAPI = new TrueLogAPI();
truelogAPI.startTrueLog("C:/temp/myTrueLogFile.tlz");
String truelogId = truelogAPI.getTrueLogId();

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
Map<String, Object> options = new HashMap<>();
options.put("trueLogId", trueLogId);
capabilities.setCapability("silkTestOptions", options);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);
スタンドアロンの Selenium を使用しているときと同じ方法で、RemoteWebDriver オブジェクトを使用できるようになります。例:
driver.get("http://demo.borland.com/InsuranceWebExtJS/");
driver.findElementById("login-form:login");
スクリプトを実行すると、すべての Selenium の操作と Silk4J の操作が、スクリーンショットやパラメータと共に TrueLog に記録されます。