我在使用GeckoDriver将Selenium Webdriver与firefox连接时遇到问题。
我的Firefox版本是-Mozilla Firefox 52.8.1
pom.xml
<properties>
<selenium.version>3.3.0</selenium.version>
</properties>
<!-- Selenium -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>${selenium.version}</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>${selenium.version}</version>
</dependency>
启动中心的命令-
/data1/jdk-8u131-linux-x64/jdk1.8.0_131/bin/java -jar $BUILD_REPOSITORY/org/seleniumhq/seleniuselenium-server-standalone/3.141.5/selenium-server-standalone-3.141.5.jar -role hub -port 4444
启动节点的命令-
/usr/java64/jre1.8.0_181-amd64/bin/java -Dwebdriver.gecko.driver=/usr/g/ctuser/geckodriver -jar selenium-server-standalone-3.141.5.jar -role node -huhttp://3.57.51.87:4444/grid/register -host 3.231.15.68
GeckoDriver-geckodriver-v0.15.0-linux64.tar.gz
测试代码-
public static void main(String[] args) {
System.setProperty("webdriver.gecko.driver", "/export/data1/selenium/geckodriver");
DesiredCapabilities firefox = DesiredCapabilities.firefox();
firefox.setBrowserName("firefox");
firefox.setPlatform(Platform.UNIX);
RemoteWebDriver remoteDriver = new RemoteWebDriver(firefox);
remoteDriver.get("http://localhost:7005/");
System.out.println(remoteDriver.getTitle());
remoteDriver.quit();
}
获得例外-
线程“主”中的异常 org.openqa.selenium.SessionNotCreatedException:无法创建新的 远程会话。所需功能=功能{浏览器名称: firefox,marionette:true,平台:UNIX,版本:}构建信息: 版本:“ 3.141.5”,修订版:“ d54ebd709a”,时间: '2018-11-06T11:58:47'系统信息:主机:'liblab8.site',IP: '3.231.15.68',操作系统名称:'Linux',os.arch:'amd64',操作系统版本: '3.0.101-0.47.106.35.1.15690.0.PTF-default',java.version:'1.8.0_181' 驱动程序信息:driver.version:未知命令持续时间或超时:0 毫秒 sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216) 在 org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168) 在 org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:363) 在 org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:113) 在 org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141) 在 org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604) 在 org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244) 在 org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:131) 在 org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:158) 在 org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:148) 在com.ge.test.Test1.main(Test1.java:16)上由以下原因引起: org.openqa.selenium.SessionNotCreatedException:无法创建新的 远程会话。所需功能=功能{浏览器名称: firefox,marionette:true,平台:UNIX,版本:}构建信息: 版本:“ 3.141.5”,修订版:“ d54ebd709a”,时间: '2018-11-06T11:58:47'系统信息:主机:'liblab8.site',IP: '3.231.15.68',操作系统名称:'Linux',os.arch:'amd64',操作系统版本: '3.0.101-0.47.106.35.1.15690.0.PTF-default',java.version:'1.8.0_181' 驱动程序信息:driver.version:未知构建信息:版本:'3.3.0', 修订:'b526bd5b41',时间:'2017-03-07 19:26:04 +0000'系统信息: 主机:“ ctwdof067.am.health.ge.com”,IP:“ 3.57.51.87”,操作系统名称: 'Linux',os.arch:'amd64',os.version:'3.0.101-0.40-default', java.version:'1.8.0_131'驱动程序信息:driver.version:在以下位置未知 org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:87) 在 org.openqa.selenium.grid.session.remote.RemoteSession $ Factory.performHandshake(RemoteSession.java:147) 在 org.openqa.selenium.grid.session.remote.ServicedSession $ Factory.apply(ServicedSession.java:161) 在 org.openqa.selenium.remote.server.ActiveSessionFactory.lambda $ apply $ 12(ActiveSessionFactory.java:180) 在java.util.stream.ReferencePipeline $ 3 $ 1.accept(未知源)在 java.util.stream.ReferencePipeline $ 11 $ 1.accept(来源未知) java.util.stream.ReferencePipeline $ 2 $ 1.accept(来源未知) java.util.Spliterators $ ArraySpliterator.tryAdvance(未知源) java.util.stream.ReferencePipeline.forEachWithCancel(未知源) 在java.util.stream.AbstractPipeline.copyIntoWithCancel(未知 来源)java.util.stream.AbstractPipeline.copyInto(未知来源) 在java.util.stream.AbstractPipeline.wrapAndCopyInto(未知来源) 在java.util.stream.FindOps $ FindOp.evaluateSequential(未知源) 在java.util.stream.AbstractPipeline.evaluate(未知源)在 java.util.stream.ReferencePipeline.findFirst(未知源),位于 org.openqa.selenium.remote.server.ActiveSessionFactory.apply(ActiveSessionFactory.java:183) 在 org.openqa.selenium.remote.server.NewSessionPipeline.lambda $ null $ 2(NewSessionPipeline.java:66) 在java.util.stream.ReferencePipeline $ 3 $ 1.accept(未知源)在 java.util.stream.ReferencePipeline $ 2 $ 1.accept(来源未知) java.util.Collections $ 2.tryAdvance(未知源) java.util.stream.ReferencePipeline.forEachWithCancel(未知源) 在java.util.stream.AbstractPipeline.copyIntoWithCancel(未知 来源)java.util.stream.AbstractPipeline.copyInto(未知来源) 在java.util.stream.AbstractPipeline.wrapAndCopyInto(未知来源) 在java.util.stream.FindOps $ FindOp.evaluateSequential(未知源) 在java.util.stream.AbstractPipeline.evaluate(未知源)在 java.util.stream.ReferencePipeline.findFirst(未知源),位于 org.openqa.selenium.remote.server.NewSessionPipeline.lambda $ createNewSession $ 3(NewSessionPipeline.java:69) 在java.util.stream.ReferencePipeline $ 3 $ 1.accept(未知源)在 java.util.stream.ReferencePipeline $ 3 $ 1.accept(来源未知) java.util.stream.ReferencePipeline $ 3 $ 1.accept(来源未知) java.util.stream.DistinctOps $ 1 $ 2.accept(来源未知) java.util.stream.ReferencePipeline $ 2 $ 1.accept(来源未知) java.util.stream.ReferencePipeline $ 3 $ 1.accept(来源未知) java.util.stream.ReferencePipeline $ 2 $ 1.accept(来源未知) java.util.stream.Streams $ StreamBuilderImpl.tryAdvance(未知源) 在java.util.stream.Streams $ ConcatSpliterator.tryAdvance(未知 来源) java.util.stream.ReferencePipeline.forEachWithCancel(未知源) 在java.util.stream.AbstractPipeline.copyIntoWithCancel(未知 来源)java.util.stream.AbstractPipeline.copyInto(未知来源) 在java.util.stream.AbstractPipeline.wrapAndCopyInto(未知来源) 在java.util.stream.FindOps $ FindOp.evaluateSequential(未知源) 在java.util.stream.AbstractPipeline.evaluate(未知源)在 java.util.stream.ReferencePipeline.findFirst(未知源),位于 org.openqa.selenium.remote.server.NewSessionPipeline.createNewSession(NewSessionPipeline.java:72) 在 org.openqa.selenium.remote.server.commandhandler.BeginSession.execute(BeginSession.java:65) 在 org.openqa.selenium.remote.server.WebDriverServlet.lambda $ handle $ 0(WebDriverServlet.java:235) 在java.util.concurrent.Executors $ RunnableAdapter.call(未知 源)位于java.util.concurrent.FutureTask.run(未知源)位于 java.util.concurrent.ThreadPoolExecutor.runWorker(未知源),位于 java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知源) java.lang.Thread.run(未知来源)
集线器控制台-
01:47:49.231信息[RequestHandler.process]-获得创建请求的请求 新会话:Capabilities {browserName:firefox,marionette:true, 平台:UNIX,版本:} 01:47:49.232信息[TestSlot.getNewSession] -尝试在测试槽{server:CONFIG_UUID = e18d691a-1d36-4b44-8526-777d4443d078, seleniumProtocol = WebDriver,marionette = true,browserName = firefox, maxInstances = 5,platformName = LINUX,platform = LINUX}
节点控制台-
01:43:34.137信息[ActiveSessionFactory.apply]-功能为:{
“ browserName”:“ firefox”,“ marionette”:true,“ platform”:“ UNIX”, “ version”:“”} 01:43:34.137信息 [ActiveSessionFactory.lambda $ apply $ 11]-匹配的工厂 org.openqa.selenium.grid.session.remote.ServicedSession $ Factory (提供者:org.openqa.selenium.firefox.GeckoDriverService) 1542008614143 geckodriver INFO收听127.0.0.1:43589 1542008614199 mozprofile :: profile INFO使用配置文件路径 /tmp/rust_mozprofile.bGje3sR6MQxe 1542008614199 geckodriver :: marionette信息启动浏览器 / usr / bin / firefox和args [] 1542008614201 geckodriver :: marionette INFO连接到木偶上 本地主机:56293 1542008615126木偶信息在端口56293上侦听 NPP_GetValue()NPP_GetValue()NPP_GetValue()NPP_GetValue()
我不明白这里发生了什么。请帮助