如何运行 selenium-server-standalone?

Posted

技术标签:

【中文标题】如何运行 selenium-server-standalone?【英文标题】:how to run a selenium-server-standalone? 【发布时间】:2015-05-05 09:25:41 【问题描述】:

我正在尝试运行 selenium 服务器,但出现错误:

rond-macpro:selenium eladb$  java -Dwebdriver.chrome.driver=./chromedriver -r selenium-server-standalone-2.44.0.jar
Unrecognized option: -r
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

并且没有 -r(它到底是什么?)

rond-macpro:selenium eladb$  java -Dwebdriver.chrome.driver=./chromedriver  selenium-server-standalone-2.44.0.jar
Error: Could not find or load main class selenium-server-standalone-2.44.0.jar

我应该如何启动服务器?

如何设置非默认端口来监听?

这两个帖子:12 - 与语法相矛盾。我想。

【问题讨论】:

一个问题:为什么要在这里指定chrome驱动? 【参考方案1】:
java -jar seleniumjar.jar -Dwebdriver.chrome.driver=./chromedriver 

如果你想指定端口做

java -jar seleniumjar.version.jar -Dwebdriver.chrome.driver=./chromedriver -port 4545

从 3.8.1 开始,不再需要指定驱动程序:

java -jar seleniumjar.jar

【讨论】:

你的cmd怎么不包含主类路径? @EladBenda 对不起。请澄清更多 对于一般的java来说,如果jar只包含一个主类,我们就不用在java -jar cmd?中写它的名字? 哦,明白了。这就是seleniumHQ 实际上建议运行它的方式。从来不想深入了解它在内部是如何工作的 @johnlowvale 您需要在服务器启动后注册节点。但请注意,ghost 驱动程序和 PhantomJs 目前已不再维护。 *** phantomjs --webdriver=8080 --webdriver-selenium-grid-hub=127.0.0.1:4444 ***【参考方案2】:

独立运行Selenium Server:

Form Jar Source Main-Class org.openqa.grid.selenium.GridLauncher

根据 GridRole 类 - Selenium 服务器可以以下列角色之一运行:

    NOT_GRID [如果省略 -role 选项,则服务器独立运行而不是网格的一部分]> HUB [作为 Selenium 网格的枢纽] NODE [作为 Selenium 网格的一个节点]
D:\> java -jar selenium-server-standalone-*.jar -host 127.0.0.1 -port 4444

非网格

RC(Selenium interface)- IP:Port/selenium-server

Selenium 远程控制 (RC) 需要在执行测试脚本之前启动服务器。 RC 服务器注入 Selenium 核心 (JavaScript) 进入浏览器。核心(守护进程)通过您的测试脚本从服务器接收命令并在浏览器中执行它们,然后结果到您的程序。但无法处理移动鼠标光标和移动执行。

Java 客户端驱动程序: 客户端——将浏览器配置为使用 Selenium 服务器作为 HTTP 代理,并通过 "/selenium-server/RemoteRunner.html?sessionId=1234" 将浏览器命令传递给服务器,客户端可以通过 HTTP 向 selenium 服务器发送驱动程序命令请求,如下所示:

代码和请求:RC 服务器持续运行。我们创建一个守护进程并通过它与浏览器进行通信。

Selenium daemon = new DefaultSelenium("172.16.20.156", 4464, "*firefox", "https://www.google.co.in/");
daemon.start(); -- daemon.stop(); (OR)
setUp("http://www.google.com/", "*firefox", 4454); selenium.windowMaximize();

GET:http://localhost:4454/selenium-server/driver/?cmd=open&1=https://www.google.co.in/&sessionId=9b1a232d9478497892e09cfc93cf665a
RC(WebDriverinterface)- IP:Port/wd/hub/static/resource/hub.html:

RWD 代码和Requests

WebDriver nativeDriver = new RemoteWebDriver(new URL("http://127.0.0.1:4454/wd/hub"), DesiredCapabilities.firefox());

Requests:
http://127.0.0.1:4454/wd/hub/session
    /123...[SESSIONID]
        /url
         "url" : "http://demo.opencart.com/index.php?route=account/login" 


        /execute
         "script" : "document.querySelectorAll( arguments[0] )[0].click();", "args" : ['input.btn'] 

Grid:[- IP:Port/grid/console]

HUB Grid HUB Running as a standalone server: Hub 是在多个节点机器上分发测试的中心点,这些节点机器注册到它以进行并行执行。

java -jar selenium-server-standalone-2.53.0.jar -host 127.0.0.1 -port 4454 -role hub -log "D:\\HUB_Log.txt"

NODE [RC] 必须通过此 URL 向 HUB 发送请求才能注册 - IP:Port//grid/register

java -jar selenium-server-standalone-2.53.0.jar -host 127.0.0.1 -port 4458 -role node 
-hub http://127.0.0.1:4454/grid/register -hubHost 127.0.0.1 -hubPort 4454 
-browser browserName=firefox,version=24.0, maxinstance=1,platform=WINDOWS7 
-browser  browserName=chrome,version=53.0,platform=WINDOWS 
-Dwebdriver.chrome.driver=D:\\Drivers\\chromedrivers\\2.24\\chromedriver.exe

Running as a grid node: browser Instance INFO: browserName=chrome, version=53.0, maxinstance=1, platform=WINDOWS 命令​​行参数,System Property 值 -Dproperty=value -Dchrome=driverAddress (如果 value 是包含空格的字符串,则必须将字符串括在双引号中)

使用 JSON 配置文件 registerNode.json 注册节点。

D:\SeleniumJar_Source>java -jar selenium-server-standalone-2.53.0.jar -role node 
-hub http://127.0.0.1:4454/grid/register 
-nodeConfig registerNode.json 
-Dwebdriver.chrome.driver="D:\\Drivers\\chromedrivers\\2.24\\chromedriver.exe" 
-Dwebdriver.ie.driver="D:\\Drivers\\IEDrivers\\iedriver64\\IEDriverServer.exe" 
-Dwebdriver.firefox.logfile="D:\\FirefoxInstance.txt" 
-Dwebdriver.chrome.logfile="D:\\ChromeInstance.txt" 
-Dwebdriver.ie.logfile="D:\\IEInstance.txt"

WebDriver 在开始执行之前不需要任何服务器启动。您可以看到WebDriver 就像一个普通的 Java 库一样:它完全是独立的,您不需要记住在使用它之前启动任何额外的进程或运行任何安装程序。

WebDriver driver = new FirefoxDriver();

@see

Selenium using Java: Start Hub Server and register Nodes with Hub GitHub Wiki

【讨论】:

【参考方案3】:
java -jar selenium-server-standalone-2.44.0.jar -port port_no

【讨论】:

【参考方案4】:

我想在@Saifur 答案中添加更多网络驱动程序。 https://***.com/a/28854250/4587961

java   -Dwebdriver.ie.driver=./IEDriverServer32.exe -Dwebdriver.chrome.driver=./chromedriver.exe -jar selenium.jar -port 4545

注意,对于 IE,您运行的是 32 位版本的驱动程序。它有效。我创建了一个 bat 文件并将其放在我还放置驱动程序的 selenium 文件夹中。

【讨论】:

【参考方案5】:

首先应该指定驱动部分,然后是 selenium jar:

java -Dwebdriver.chrome.driver=./chromedriver -jar selenium-server-standalone-3.141.59.jar

这适用于 Ubuntu 18.04

【讨论】:

以上是关于如何运行 selenium-server-standalone?的主要内容,如果未能解决你的问题,请参考以下文章

程序运行原理:程序是如何运行又是如何崩溃的?

程序运行原理:程序是如何运行又是如何崩溃的?

程序运行原理:程序是如何运行又是如何崩溃的?

程序运行原理:程序是如何运行又是如何崩溃的?

汇编程序运行后,如何查看运行结果

如何让VBS文件 自动开机就运行