我之前使用的是selenium-server-standalone-2.53.1和chromedriver 2.22,我的验收运行得非常好。当我今天使用同一版本运行它时,它开始失败,导致Unable to create a new remote session
错误。现在升级到selenium-server-standalone-3.0.1和chromedriver-2.25之后,它几乎抛出了同样的错误。我无法弄清楚为什么会这样。我对Selenium很新,非常感谢任何帮助。
升级后出错
Nov 08, 2016 4:27:54 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Attempting bi-dialect session, assuming Postel's Law holds true on the remote end
Nov 08, 2016 4:27:54 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to original OSS JSON Wire Protocol.
Nov 08, 2016 4:27:54 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Falling back to straight W3C remote end connection
org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{browserName=chrome, version=, platform=ANY}], required capabilities = Capabilities [{}]
Build info: version: '3.0.1', revision: '1969d75', time: '2016-10-18 09:49:13 -0700'
System info: host: 'xxx.yyy.com', ip: '172.19.10.212', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.10.5', java.version: '1.8.0_60'
Driver info: driver.version: RemoteWebDriver
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:91)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:241)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:128)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:155)
at pet.furiend.website.selenium.test.acceptance.HomePageTest.setUp(HomePageTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
- - - - 的更新 -----
在对webdriver url进行更改后,它似乎已经开始了,但我现在又抛出了另一个错误。
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:251)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:158)
at pet.furiend.website.selenium.test.acceptance.HomePageTest.setUp(HomePageTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:117)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:262)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
答案 0 :(得分:2)
如果您能让我们知道您的Chrome浏览器版本会有什么帮助,因为它会显着影响ChromeDriver的兼容性。例如,如果您不小心更新到Chrome浏览器版本54,那么您可能需要ChromeDriver 2.25才能正常使用。
只要您说它与之前的设置一起使用; 我会将您的资金投入到您的实际Chrome浏览器 (小心不是chromeDriver)更新;因此导致错误。整个组合:
Selenium Standalone
ChromeDriver
Chrome浏览器
首先,如果我是你,我会尝试最新的ChromeDriver,这是v2.25,看看这是否能解决您的问题。您可以从这里下载latest ChromeDriver225
如果这没有解决您的问题,请尝试使用不同版本的Chrome + ChromeDriver,直到您做对了。 Selenium不易变化,3.0.1版本可以根据您的需要使用任何组合。请查看此处了解哪些版本的ChromeDriver与哪些版本的Chrome浏览器兼容。ChromeDriver Downloads/Compatibility
我可以确认最新的Chrome浏览器,ChromeDriver和Selenium可以很好地协同工作。 所以试试这个组合:
在更新到ChromeDriver的最新版本后更新
正如我在下面的评论中提到的那样,我的选项100%使用最新版本的Chrome(54.0),ChromeDriver(2.25)和Selenium(3.0.1)。您可以先尝试评论所有功能并使用这些选项运行chrome:
System.setProperty("webdriver.chrome.driver", "C:\\projects\\test\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.addArguments("test-type");
options.addArguments("--disable-extensions");
所以你可以用以下方式激活上面的内容:
driver = new ChromeDriver(options);
现在关于功能,我认为你正在使用的版本,没有获得或传达价值。如果你坚持使用它(我发现它没有个人意义)你可以指定一个像下面这样的值,看看这是否适合你。
caps.setCapability("browser_version", "54.0.2840.87");
现在,你应该已经解决了这个问题,但是如果出现了什么问题,这实际上阻碍了你的工作,那么试试这个非常稳定的组合:
希望你这次可以解决,让我们知道你是怎么来的!
答案 1 :(得分:0)
您似乎正在使用OSX,是否有可能使用终端应用程序启动测试?
我被困这个错误了一段时间,我设法通过在高级终端应用设置中取消选中“启动时设置语言环境变量”复选框来解决问题。 或尝试使用此前缀启动测试:
LC_NUMERIC=”en_US.UTF-8″ *the command to launch your tests*
答案 2 :(得分:0)
我在Chrome浏览器55.0.2883.87,Chrome驱动程序2.27上遇到了同样的问题 Selenium 3.0.1,作者:
“org.openqa.selenium.SessionNotCreatedException:无法创建新的远程会话。”
以前Grid正在开发Firefox 46.0.1,Selenium 2.52.0。 但是我已将Node和Hub Url的位置切换为:
driver = new RemoteWebDriver(hubAddress.toURL(), capabilities);
它对我有用。 我希望这会对某人有所帮助。