Remote 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 版開始)

伺服器有兩個不同的逾時,可以設定如下

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)