У меня установлена 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");
Error forwarding the new session cannot find
- это способ сети сообщить вам, что он не может найти узел, который соответствует вашим запрошенным возможностям.
Сетка использует следующие 4 атрибута для сопоставления возможностей [сопоставьте запрошенную возможность из вашего тестового примера с фактической возможностью, которую может предложить узел]
Вы не упомянули, как вы запускаете свой узел. В частности, вы не упомянули, используете ли вы файл 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: невозможно найти соответствующий набор возможностей
запустить 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
Это сообщение об ошибке ...
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 - ключевое слово / зарезервированное слово, поэтому не надо использует этот термин в ваших тестах.
browserName
: Если значение не является строкой, равной записи «browserName» в сопоставленных возможностях, вернуть успех с нулевыми данными.browserVersion
: сравните значение с записью browserVersion в сопоставленных возможностях, используя алгоритм сравнения, определенный реализацией. При сравнении принимается значение, которое накладывает ограничения на версию с помощью операторов «<», «<=», «>» и «> =». Если два значения не совпадают, вернуть успех с нулевыми данными.platformName
: Если значение не является строкой, равной записи «platformName» в сопоставленных возможностях, вернуть успех с нулевыми данными.browCapab = DesiredCapabilities.firefox (); Параметр FirefoxOptions = новый FirefoxOptions (); option.setCapability ("марионетка", истина); browserType = BrowserType.FIREFOX; browCapab.setBrowserName ("Firefox"); browCapab.setPlatform (Platform.WINDOWS);
Отображается ошибка: org.openqa.selenium.SessionNotCreatedException: невозможно найти соответствующий набор возможностей
Большой !!! Итак, ваша основная проблема WebDriverException: ошибка пересылки нового сеанса не может быть найдена: возможности решена. Для ошибки org.openqa.selenium.SessionNotCreatedException: невозможно найти соответствующий набор возможностей см. Обсуждения это и это.
@EdithAlvarado Если мой отвечать обслуживает ваш вопрос, пожалуйста, Принимать the отвечать, щелкнув пустую галочку рядом с моим отвечать, который находится чуть ниже стрелки проголосовало, чтобы галочка превратилась в зеленый.
У меня не получилось, пользуюсь 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
@EdithAlvarado В вашей настройке / тестировании кода было несколько проблем, которые не были очевидны в начальной версии вашего вопроса. Однако, согласно моему ответу, ваша первоначальная ошибка WebDriverException: Error forwarding the new session cannot find : Capabilities
теперь решена. Вы обновили вопрос после получения эффективных ответов, которые противоречат всем передовым методам работы с stackoverflow и не будут полезны будущим читателям. Если ваши требования изменились, не стесняйтесь задавать новый вопрос. Волонтеры Stackoverflow будут рады вам помочь. На этот раз я возвращаю вопрос к исходному
Почему вы используете browCapab.setBrowserName ("firefox"); и browCapab.setPlatform (Platform.WINDOWS); если у вас есть browCapab = DesiredCapabilities.firefox () ;?