it-swarm.com.ru

org.openqa.Selenium.SessionNotCreatedException: невозможно найти соответствующий набор возможностей при запуске Firefox v37 через Selenium v3.11.0

Я пытаюсь выполнить тестовый запуск веб-сайта в 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   
2
Rohn Kerry

Для простоты, поскольку вы используете Selenium Client v3.11.0 и Firefox v37, вам необходимо загрузить последнюю версию GeckoDriver из mozilla/geckodriver и сохраните его в любом месте вашей системы. Далее в строке System.setProperty() передайте Keywebdriver.gecko.driver вместе с Value в качестве абсолютный путьGeckoDriver и, наконец, через класс DesiredCapabilities установите возможность marionatte равной false и объединитесь с экземпляром экземпляра FirefoxOptions, чтобы инициировать Firefox браузер следующим образом:

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
0
DebanjanB

Вот как устанавливается системное свойство:

System.setProperty("webdriver.gecko.driver", "C:\\...\\geckodriver.exe");
1
Rabia Asif

Просто обновил ваш код. Вам придется установить путь к драйверу, пока setProperty и пользователь webdriver.gecko.driver для последней версии драйвера Firefox.

    if (browsers.equalsIgnoreCase("Firefox")) {
            String driverPath = System.getProperty("user.dir") + "\\src\\test\\Java\\drivers\\geckodriver.exe"; 
            System.setProperty("webdriver.firefox.driver", "driverPath"); 
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("marionette", false); 
            FirefoxOptions options = new FirefoxOptions(); 
            options.merge(capabilities);
            FirefoxDriver driver = new FirefoxDriver(options);
            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);
        }

Дай мне знать.

0
BhavinD.

вы используете user.dir это в основном означает: текущий рабочий каталог

Вот код, который позволяет вам инициализировать браузер Firefox с помощью Selenium.

public static void main(String[] args) {


            System.setProperty("webdriver.gecko.driver", "C:\\your\\gecko\\driver\\path\\geckodriver.exe");
            driver = new firefoxDriver();

Это оно ! Вы можете использовать драйвер Firefox для выполнения нескольких операций, таких как: 

1.  driver.get(String args0);
2.  driver.getCurrentUrl();
3.  driver.getPageSource();
4.  driver.getTitle();
5.  driver.findElememt(By args0);
6.  driver.findElements(By args0);
7.  driver.naviagate();
8.  driver.manage();
9.  driver.close();
10. driver.quit();
11. driver.switchTo();
12. driver.getWindowHandle();
13. driver.getWindowHandles();

Пожалуйста, дайте мне знать, если у вас есть какие-либо проблемы, связанные с этим.

0
cruisepandey