当前位置: 首页 > 面试题库 >

org.openqa.selenium.SessionNotCreatedException:通过Selenium v​​3.11.0启动Firefox v37时,找不到匹配的功能集

琴修为
2023-03-14
问题内容

我试图在Firefox中运行网站进行测试,但出现错误“驱动程序可执行文件的路径必须由webdriver.gecko.driver系统属性设置;”
我已经正确设置了路径,但仍然不知道问题出在哪里。这是我的代码:

if (browsers.equalsIgnoreCase("Firefox")) 
{
        String driverPath = System.getProperty("user.dir") + "\\src/test/java\\drivers\\geckodriver.exe";
        System.setProperty("webdriver.firefox.marionette", "false");
        driver = new FirefoxDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
    } else if (browsers.equalsIgnoreCase("Chrome")) {
        // String driverPath = System.getProperty("user.dir") +
        // "\\src\\Drivers\\chromedriver";
        // System.setProperty("webdriver.chrome.driver", driverPath);
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

    }

这是我的代码的失败跟踪:

FAILED CONFIGURATION: @BeforeClass launchBrowser
org.openqa.selenium.SessionNotCreatedException: Unable to find a matching set of capabilities
Build info: version: '3.8.0', revision: '924c4067df', time: '2017-11-30T11:36:59.109Z'
System info: host: 'DSCHD-PC-180', ip: '192.168.6.122', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_161'
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:123)
    org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:601)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
    at Utility.UtilityMethods.openBrowser(UtilityMethods.java:26)
    at TestCases.LoginTestCase.launchBrowser(LoginTestCase.java:35)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
    at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:455)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
    at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
    at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:168)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

SKIPPED CONFIGURATION: @AfterClass quitBrowser
SKIPPED: registration

问题答案:

为了简化操作,在使用 Selenium Client v3.11.0Firefox v37时, 您需要从 mozilla /
geckodriver
下载最新的
GeckoDriver 并将其保存在系统中的任何位置。接下来,在该行中传递 Key webdriver.gecko.driver* 以及
Value 作为 GeckoDriver绝对路径 ,最后通过 DesiredCapabilities 类将功能
marionatte 设置为 false 并合并到 FirefoxOptions 实例的实例中以启动 Firefox
****System.setProperty()
__
__*____浏览器如下:

System.setProperty("webdriver.gecko.driver", "C:/path/to/geckodriver.exe");
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("marionatte", false);
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dc);
FirefoxDriver driver =  new FirefoxDriver(opt);
driver.get("https://stackoverflow.com");
System.out.println("Application opened");
System.out.println("Page Title is : "+driver.getTitle());
driver.quit();

更新资料

根据您的评论更新,您正在使用 GeckoDriver v0.20.1

但是,如果您回顾一下 GeckoDriver v0.18.0 的发行说明,它显然会提到:

geckodriver now recommends Firefox 53 and greater

因此,使用 GeckoDriver v0.18.0 及更高版本,您必须强制使用Firefox
53及更高版本。要摆脱这种限制,您可以降级到以下任一版本:

  • GeckoDriver v0.17.0
  • GeckoDriver v0.16.1


 类似资料:
  • 问题内容: 我这里必须有一些版本不匹配,因为我无法使用Python来实现Selenium来启动Firefox Web浏览器。我使用的是Firefox的旧版本,因为此处的其他人具有相同的旧Python版本,而对于他们来说,旧版本的Firefox效果最佳。 码: 错误: 版本信息: Python 2.7.10 selenium3.8.0 Firefox 46.0 GeckoDriver 0.19.1(

  • 这是我正在使用的代码 这就是错误 我在Ubuntu中使用WSL,我在使用Vim。但是,如果我在WSL之外使用VSC,我不会得到这个错误。但我想用Vim编码。

  • 版本: > geckodriver 0.26.0(路径内环境变量) 硒3.141.0 火狐75.0 python 3.8.2 Windows 10 当我尝试: 我明白了: 当我尝试时: 我明白了: IEDriver适用于IE 我有Windows Visual Studio安装https://github.com/mozilla/geckodriver/releases指示我应该。 我能做些什么来实

  • 我知道这是之前提出的问题的重复。但我这辈子都不能让它发挥作用。我已将其添加到路径中。我已经设置了可执行路径。我已经尝试了驱动程序的多个版本。还是相同的错误。想知道是否有人能为我提供他们的python、selenium和geckodriver以及firefox版本?甚至需要firefox吗?我以前让它工作过,就像一年前一样,但现在它不工作了。谢谢 我的版本: 代码: 回溯

  • 问题内容: 我正在使用/ 来获取HTTP响应中的响应代码。返回1,但是尝试获取异常!知道为什么吗? 这是代码: 这是输出: 问题答案: 总是会创建一个新的匹配器,因此您需要再次致电。 尝试:

  • 我遇到了一个APIendpoint,得到了如下结果。 我想匹配数组中的元素 我尝试了以下方法: 但观察到以下例外: 预期:“#[]ind”,原因:没有数组或列表,请有人帮忙?