Org.openqa.selenium.WebDriverException: ошибка пересылки нового сеанса не может быть найдена: Возможности {acceptInsecureCerts: true с Firefox

У меня установлена ​​Windows 10–64, Firefox 61.0.2, Java. Я выполняю свои тесты с помощью selenium-grid и selenium-server-standalone-3.11.0.jar и geckodriver 21.0, но когда я запускаю его, тест показывает следующую ошибку:

org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : Capabilities {acceptInsecureCerts: true, browserName: firefox, platform: WINDOWS, version: 61.0.2}

Мой код:

private void createBrowserInstance() throws MalformedURLException {
    switch (environmentHandler.getTestBrowser().toLowerCase()) {
        case "firefox":
            FirefoxOptions firefox  = new FirefoxOptions();
            firefox.setCapability("marionette", false);
            browCapab = DesiredCapabilities.firefox();
            browCapab.setBrowserName("firefox");
            browCapab.setPlatform(Platform.WINDOWS);
            browCapab.setVersion("61.0.2");

Почему вы используете browCapab.setBrowserName ("firefox"); и browCapab.setPlatform (Platform.WINDOWS); если у вас есть browCapab = DesiredCapabilities.firefox () ;?

unickq 03.09.2018 22:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
1 646
2

Ответы 2

Error forwarding the new session cannot find - это способ сети сообщить вам, что он не может найти узел, который соответствует вашим запрошенным возможностям.

Сетка использует следующие 4 атрибута для сопоставления возможностей [сопоставьте запрошенную возможность из вашего тестового примера с фактической возможностью, которую может предложить узел]

  • Имя браузера
  • Платформа
  • Версия
  • Название приложения (этот AFAIK не задокументирован, но он существует. См. здесь)

Вы не упомянули, как вы запускаете свой узел. В частности, вы не упомянули, используете ли вы файл JSON конфигурации узла или нет (этот файл конфигурации обычно используется, помимо прочего, для настройки поддерживаемых возможностей узла). Но я предполагаю, что вы его не используете.

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

Так что, возможно, у него будет узел, который может поддерживать firefox на windows. Но ваш тест ищет firefox version 61.0.2, работающий на windows. Это объясняет ошибку.

Чтобы устранить проблему, вы можете сделать одно из следующих действий:

  • Удалите строку browCapab.setVersion("61.0.2"); из вашего тестового кода (или)

  • Используйте информацию о версии в файле конфигурации узла при запуске узла.

    Чтобы узнать, как работать с файлом конфигурации узла, вы можете обратиться к моему сообщению в блоге здесь

Большое спасибо за ваш ответ, я удалил версию, теперь она показывает другую ошибку, org.openqa.selenium.remote.DesiredCapabilities firefox ИНФОРМАЦИЯ: Использование new FirefoxOptions() предпочтительнее DesiredCapabilities.firefox() 08: 35: 54.134 [основная] ОШИБКА com.verifone.basetest .MainAbstractTest - Возможно, сервер не работает на целевом объекте. Эта цель: локальный: 4444 / wd / хаб org.openqa.selenium.SessionNotCreatedException: невозможно найти соответствующий набор возможностей

ealvarado 04.09.2018 13:39

запустить java -jar selenium-server-standalone-3.11.0.jar -role hub start java -Dwebdriver.chrome.driver = chromedriver.exe -jar selenium-server-standalone-3.11.0.jar -role node -port 5555 - hub локальный: 4444 / сетка / регистр -browser "browserName = chrome, platform = WINDOWS" start java -Dwebdriver.gecko.driver = geckodriver.exe -jar selenium-server-standalone-3.11.0.jar -role node -port 5556 -hub локальный: 4444 / сетка / регистр -browser " browserName = firefox, platform = WINDOWS ", maxInstances = 3, maxSes‌ sion = 1

ealvarado 04.09.2018 13:44

Это сообщение об ошибке ...

org.openqa.selenium.WebDriverException: Error forwarding the new session cannot find : Capabilities {acceptInsecureCerts: true, browserName: firefox, platform: WINDOWS, version: 61.0.2}

... означает, что GeckoDriver не смог переслать новый сеанс.

Ваша основная проблема - это несовместимость в конфигурации, которую вы используете, как показано ниже:

  • По вашему вопросу, когда вы используете:
    • selenium-server-standalone-3.11.0.jar
    • geckodriver 21.0
  • Таким образом, вы должны обязательно использовать возможность марионетка. Для этого либо:

    • Вы можете оставить возможность марионетка нетронутой, поскольку по умолчанию для marionette установлено значение Истинный.
    • Вы также можете указать возможность марионетка следующим образом:

      FirefoxOptions firefox_options  = new FirefoxOptions();
      firefox_options.setCapability("marionette", true);
      
  • Fire Fox - ключевое слово / зарезервированное слово, поэтому не надо использует этот термин в ваших тестах.

  • Остальная часть кода выглядит хорошо.
  • Согласно Черновик редактора WebDriver W3C:
    • browserName: Если значение не является строкой, равной записи «browserName» в сопоставленных возможностях, вернуть успех с нулевыми данными.
    • browserVersion: сравните значение с записью browserVersion в сопоставленных возможностях, используя алгоритм сравнения, определенный реализацией. При сравнении принимается значение, которое накладывает ограничения на версию с помощью операторов «<», «<=», «>» и «> =». Если два значения не совпадают, вернуть успех с нулевыми данными.
    • platformName: Если значение не является строкой, равной записи «platformName» в сопоставленных возможностях, вернуть успех с нулевыми данными.
  • Вы можете найти соответствующее обсуждение в org.openqa.selenium.WebDriverException: ошибка при пересылке нового сеанса не может быть найдена: Возможности

browCapab = DesiredCapabilities.firefox (); Параметр FirefoxOptions = новый FirefoxOptions (); option.setCapability ("марионетка", истина); browserType = BrowserType.FIREFOX; browCapab.setBrowserName ("Firefox"); browCapab.setPlatform (Platform.WINDOWS);

ealvarado 04.09.2018 13:45

Отображается ошибка: org.openqa.selenium.SessionNotCreatedException: невозможно найти соответствующий набор возможностей

ealvarado 04.09.2018 13:46

Большой !!! Итак, ваша основная проблема WebDriverException: ошибка пересылки нового сеанса не может быть найдена: возможности решена. Для ошибки org.openqa.selenium.SessionNotCreatedException: невозможно найти соответствующий набор возможностей см. Обсуждения это и это.

DebanjanB 04.09.2018 13:53

@EdithAlvarado Если мой отвечать обслуживает ваш вопрос, пожалуйста, Принимать the отвечать, щелкнув пустую галочку рядом с моим отвечать, который находится чуть ниже стрелки проголосовало, чтобы галочка превратилась в зеленый.

DebanjanB 04.09.2018 13:54

У меня не получилось, пользуюсь java. запустить java -Dwebdriver.gecko.driver = geckodriver.exe -jar selenium-server-standalone-3.11.0.jar -role node -port 5556 -hub локальный: 4444 / сетка / регистр -browser "browserName = firefox, platform = WINDOWS", maxInstances = 3, maxSes‌ sion = 1

ealvarado 04.09.2018 14:24

@EdithAlvarado В вашей настройке / тестировании кода было несколько проблем, которые не были очевидны в начальной версии вашего вопроса. Однако, согласно моему ответу, ваша первоначальная ошибка WebDriverException: Error forwarding the new session cannot find : Capabilities теперь решена. Вы обновили вопрос после получения эффективных ответов, которые противоречат всем передовым методам работы с stackoverflow и не будут полезны будущим читателям. Если ваши требования изменились, не стесняйтесь задавать новый вопрос. Волонтеры Stackoverflow будут рады вам помочь. На этот раз я возвращаю вопрос к исходному

DebanjanB 04.09.2018 14:37

Другие вопросы по теме