リモートWebDriverスタンドアロンサーバー

スタンドアロンサーバーの操作

このドキュメントは以前wikiにありました

サーバーは常にテストしたいブラウザがあるマシン上で実行されます。サーバーはコマンドラインまたはコード設定のいずれかで使用できます。

コマンドラインからサーバーを起動する

`selenium-server-standalone-{VERSION}.jar`をダウンロードしたら、テストしたいブラウザがあるコンピュータに配置します。次に、jarがあるディレクトリから、以下を実行します

java -jar selenium-server-standalone-{VERSION}.jar

サーバー実行時の考慮事項

呼び出し元は、`Selenium#stop()`または`WebDriver#quit`を呼び出して、各セッションを適切に終了することが期待されます。

selenium-serverは、進行中の各セッションのインメモリログを保持し、`Selenium#stop()`または`WebDriver#quit`が呼び出されるとクリアされます。これらのセッションを終了するのを忘れると、サーバーがメモリリークする可能性があります。非常に長時間のセッションを維持する場合は、時々停止/終了する必要があるでしょう(または-Xmx jvmオプションでメモリを増やす)。

タイムアウト(バージョン2.21以降)

サーバーには2つの異なるタイムアウトがあり、次のように設定できます

java -jar selenium-server-standalone-{VERSION}.jar -timeout=20 -browserTimeout=60
  • browserTimeout
    • ブラウザがハングアップできる時間(秒単位)を制御します。
  • timeout
    • セッションが再利用されるまでにクライアントがどれくらいの間隔を空けることができるか(秒単位)を制御します。

システムプロパティ`selenium.server.session.timeout`は、2.21以降サポートされなくなりました。

`browserTimeout`は、通常のタイムアウトメカニズムが失敗した場合のバックアップタイムアウトメカニズムとして意図されており、主にgrid/サーバー環境で使用して、クラッシュ/失われたプロセスがランタイム環境を汚染して、長時間滞留しないようにすることを目的としていることに注意してください。

プログラムでサーバーを設定する

理論的には、プロセスは`DriverServlet`をURLにマッピングするのと同じくらい簡単ですが、Jettyのような軽量コンテナでページをホストすることも可能で、完全にコードで構成されています。

  • `selenium-server.zip`をダウンロードして解凍します。
  • JARファイルをCLASSPATHに配置します。
  • `AppServer`という新しいクラスを作成します。ここではJettyを使用しているので、それもダウンロードする必要があります
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.security.SslSocketConnector;
import org.mortbay.jetty.webapp.WebAppContext;

import javax.servlet.Servlet;
import java.io.File;

import org.openqa.selenium.remote.server.DriverServlet;

public class AppServer {
  private Server server = new Server();

  public AppServer() throws Exception {
    WebAppContext context = new WebAppContext();
    context.setContextPath("");
    context.setWar(new File("."));
    server.addHandler(context);

    context.addServlet(DriverServlet.class, "/wd/*");

    SelectChannelConnector connector = new SelectChannelConnector();
    connector.setPort(3001);
    server.addConnector(connector);

    server.start();
  }
}
最終更新日:2022年1月12日:追加のwiki記事をアーカイブ (e75f49c8af3)