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();
}
}