Hub отправляет тест на node, где нет указанного браузера в DesiredCapabilities

Здравствуйте.

Суть проблемы такова:

  1. На локальном компьютере запустил хаб:

    java -jar selenium-server-standalone-2.42.2.jar -role hub

  2. Далее создал три виртуальных машины, по одной версии IE на каждой (IE11 / IE10 / IE9)
    При этом лишь на IE11Win7 (название виртуалки) установлен FireFox.

Запустил на них ноды:

java -jar selenium-server-standalone-2.42.2.jar -role node  -hub http://192.168.1.148:4444/grid/register 
  1. В http://192.168.1.148:4444/grid/console отображаются все три ноды

  2. Далее пытаюсь выполнить тест, указав:

    DesiredCapabilities capability = DesiredCapabilities.firefox();

При этом я ожидаю, что хаб сам определит на какой ноде (IE11Win7) есть нужный мне браузер и отправит на нее тест.

В результате, при запуске ошибка:

Caused by: org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH. Make sure firefox is installed. OS appears to be: VISTA
Build info: version: '2.42.2', revision: '6a6995d', time: '2014-06-03 17:42:03'
System info: host: '**IE10Win7**', ip: '192.168.1.124', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.7.0_60'
Driver info: driver.version: FirefoxDriver

ps: если остановить ноды на двух других виртуалках, оставив только ту ноду, где есть FireFox - то тест успешно выполняется

Подскажите, в чем может быть проблема, и правильного ли поведения я жду от хаба? То есть должен ли он сам найти ноду с браузером, указанном в DesiredCapabilities.

Заранее спасибо.

Здравствуйте.
Возможны 2 решения:


  1. Добавить путь к Firefox (к примеру, C:\Program Files\Firefox) в переменную окружения PATH

http://www.java.com/ru/download/help/path.xml


или
2) Запускать ноду с Firefox следующим образом:

java -jar selenium-server-standalone-2.42.2.jar -role node -hub http://192.168.1.148:4444/grid/register -browser “browserName=firefox,firefox_binary=C:\Program Files\Firefox”

1 лайк

Хаб определяет наличие на нодах браузера исключительно из настроек самой ноды, но ни как не на уровне ОС.
Если вы запускаете ноду “по дефолту”, получаете

By default, this starts 11 browsers : 5 Firefox, 5 Chrome, 1 Internet Explorer. The maximum number of concurrent tests is set to 5 by default.

Все информацию о доступных браузерах и их версиях вы должны задавать самостоятельно.

1 лайк

Можно еще указать бинарник в json’е и запускать 1 батник со всеми нужными конфигурациями (IP / версии / пути только поменяйте):

{
  "capabilities":
      [
        {
		  "platform": "WINDOWS",
          "browserName": "firefox",
          "maxInstances": 1,
          "seleniumProtocol": "WebDriver",
		  "version": "29",
		  "ensureCleanSession": true,
		  "webdriver.firefox.bin": "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"
        },
        {
		  "platform": "WINDOWS",
          "browserName": "chrome",
          "maxInstances": 1,
          "seleniumProtocol": "WebDriver",
		  "version": "35",
		  "ensureCleanSession": true,
		  "chrome_binary": "C:\\Users\\YOUR_USER\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe"
        },
        {
          "platform": "WINDOWS",
          "browserName": "internet explorer",
          "maxInstances": 1,
          "seleniumProtocol": "WebDriver",
		  "version": "8",
		  "ensureCleanSession": true
        }
      ],
  "configuration":
  {
    "maxSession": 3,
	"nodeTimeout": 10,
    "port": 5556,
    "host": 127.0.0.1,
    "register": true,
    "registerCycle": 5000,
    "hubPort": 4444,
    "hubHost": 127.0.0.1
  }
}
1 лайк

Спасибо за объяснения.
Все получилось!
Особенно понравился вариант с запуском, используя json.