【问题标题】:org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities while trying to launch Firefox with Selenium v3.8.1org.openqa.selenium.SessionNotCreatedException:尝试使用 Selenium v​​3.8.1 启动 Firefox 时找不到匹配的功能集
【发布时间】:2018-10-10 18:28:59
【问题描述】:

我无法在 Selenium 3.8.1

中使用 geckodriver 启动 Firefox 浏览器

这是我的代码

public class LoginTest {
    @SuppressWarnings("deprecation")
    @Test
    public static void logintest() {
        System.setProperty("webdriver.gecko.driver",
            "C:\\Users\\abc\\Downloads\\geckodriver.exe");
        DesiredCapabilities dc = DesiredCapabilities.firefox();
        dc.setCapability("marionnete", true);
        constants.driver = new FirefoxDriver(dc);
        constants.driver.get("https://www.amazon.in");
        constants.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        constants.driver.manage().window().maximize();
    }

我无法理解为什么它不起作用并且总是给出异常

org.openqa.selenium.SessionNotCreatedException`: Unable to find a matching set of capabilities
Build info: version: '3.8.1', revision: '6e95a6684b', time: '2017-12- 01T18:33:54.468Z'<br>
System info: host: 'ABC-VAIO', ip: '192.168.1.209', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_161'<br>
Driver info: driver.version: FirefoxDriver

【问题讨论】:

  • 首先确保您的 geckodriver 版本Selenium 版本 兼容。这是在任何浏览器中使用 Selenium 时的第一个错误。确保您提供的功能是正确的,并且您没有忘记任何事情。最好是寻找官方示例或其他人的有效程序。如有疑问,请使用旧版 Selenium 试用旧版驱动程序。
  • 我使用的是 selenium 3.8.1 并从 github 下载了最新的 gecko 驱动程序,以及如何检查兼容性。
  • Selenium 已经是 3.11 ...'在 Firefox 55 及更高版本中得到最好的支持,虽然通常 Firefox 版本越新,体验越好,因为它们有更多的错误修复和功能',请参阅github.com/mozilla/geckodriver
  • 是的,我知道我强制降级到 3.8.0,因为它也不适用于 3.11
  • 可能这是同一个问题? stackoverflow.com/questions/40106844/…

标签: java selenium selenium-webdriver geckodriver mutablecapabilities


【解决方案1】:

你应该为firefox添加功能请修改你的代码如下:

System.setProperty("webdriver.gecko.driver", "C:\\Selenium\\geckodriver.exe");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities = DesiredCapabilities.firefox();
capabilities.setBrowserName("firefox");
capabilities.setVersion("your firefox version");
capabilities.setPlatform(Platform.WINDOWS);
capabilities.setCapability("marionette", false);
WebDriver driver = new FirefoxDriver(capabilities);
driver.get("https://www.amazon.in");

【讨论】:

    【解决方案2】:

    此错误消息...

    org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities
    

    ...暗示 FirefoxDriver 在启动新的 WebBrowser 会话时没有找到匹配的功能集。

    您使用的是 Selenium Client v3.8.1,但 Selenium Client v3 的发行说明 .7.0 明确指出:

    * Migrated from using `DesiredCapabilities` to either
      `MutableCapabilities` or (preferably) `ImmutableCapabilities`.
    

    因此,您必须使用 MutableCapabilities 类中的 merge() 方法在 FirefoxOptions 的实例中添加功能,并在初始化 Firefox 浏览器时传递 FirefoxOptions 对象如下:

    System.setProperty("webdriver.gecko.driver", "C:\\Users\\abc\\Downloads\\geckodriver.exe");
    DesiredCapabilities dc = DesiredCapabilities.firefox();
    dc.setCapability("marionnete", true);
    FirefoxOptions opt = new FirefoxOptions();
    opt.merge(dc);
    constants.driver = new FirefoxDriver(opt);
    constants.driver.get("https://www.amazon.in");
    

    【讨论】:

      猜你喜欢
      • 2018-09-22
      • 2018-01-26
      • 2019-04-04
      • 2019-12-25
      • 2019-11-25
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多