【问题标题】:org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities with Selenium v3.14.0 and GeckoDriver v0.23.0org.openqa.selenium.SessionNotCreatedException:无法找到与 Selenium v​​3.14.0 和 GeckoDriver v0.23.0 匹配的功能集
【发布时间】:2019-04-04 10:51:46
【问题描述】:

我的版本是 selenium-java-3.14.0 和 geckodriver-v0.23.0-win64。 我正在使用以下代码。

WebDriver driver;
System.setProperty("webdriver.gecko.driver", "D:\\\\Try out files\\\\geckodriver.exe");
driver = new FirefoxDriver();
String baseURL = "http://www.google.com";
driver.get(baseURL);

当我运行它时,我收到以下错误消息。

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities
Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:05:20.749Z'
System info: host: '*******', ip: '*****`enter code here`', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_151'
Driver info: driver.version: FirefoxDriver
remote stacktrace: 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$new$0(W3CHandshakeResponse.java:57)
    at org.openqa.selenium.remote.W3CHandshakeResponse.lambda$getResponseFunction$2(W3CHandshakeResponse.java:104)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:122)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:125)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:212)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:130)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:103)
    at basicweb.FirefoxDriverDemo.main(FirefoxDriverDemo.java:17)

【问题讨论】:

  • 尝试更新FF浏览器。

标签: selenium firefox selenium-webdriver webdriver geckodriver


【解决方案1】:

使用 firefox 56 或 61 版和 gecko 驱动程序 0.21 版。并添加 Firefox 选项使用配置文件。

FirefoxOptions fo = new FirefoxOptions();
fo.setBinary("C:\\Users\\ChawlaSh\\AppData\\Local\\Mozilla Firefox\\firefox.exe");
ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("default");
fo.setProfile(myprofile);
driver = new FirefoxDriver(fo);

我希望这肯定会有所帮助。

【讨论】:

  • 有什么理由要求 OP 降级 GeckoDriver
  • 一个月前我遇到了同样的问题,如果你查看 GitHub 上的 Mozilla 版本页面,他们会提到哪个 gecko 驱动程序与哪个版本的 selenium 和 Firefox 兼容,对我来说效果很好。
【解决方案2】:

此错误消息...

Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities

...表示您的程序无法创建新的 Firefox 浏览器 会话..


分析

有以下几个问题:

  • file.separator:分隔文件路径组件的字符。这是 UNIX 上的 / 和 Windows 上的 \。你也需要逃脱它们。
  • 您的 JDK 版本1.8.0_151,相当古老

解决方案

  • 使用 file.separator 作为 \ 转义另一个 \
  • JDK 升级到最新级别 JDK 8u191
  • 确保 GeckoDriver-Firefox 映射

  • 你的有效代码块将是:

    WebDriver driver;
    System.setProperty("webdriver.gecko.driver", "D:\\Try out files\\geckodriver.exe");
    driver = new FirefoxDriver();
    String baseURL = "http://www.google.com";
    driver.get(baseURL);
    

【讨论】:

    猜你喜欢
    • 2018-07-30
    • 2018-01-26
    • 2019-01-30
    • 2018-09-22
    • 2018-10-10
    • 2020-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多