Как настроить профиль firefox на конце node в конфигурации удаленного webdriver/grid

Всегда рекомендуется установить профиль firefox в DesiredCapabilities и передать это через провод, где находится концентратор. Как ниже

DesiredCapabilities caps = DesiredCapabilities.firefox();

    FirefoxProfile profile=new FirefoxProfile(new File("Local Path to firefox profile folder"));
    caps.setCapability(FirefoxDriver.PROFILE, profile);

URL url = new URL("http://localhost:4444/wd/hub");      
WebDriver driver= new RemoteWebDriver(url,caps );

Но отправка огромной информации профиля 87-90 мб для концентратора по http, для каждого тестового примера selenium, замедляющего выполнение тестового примера.

Я попытался настроить сетку node с помощью свойства "Dwebdriver.firefox.profile=E:\\Firefox_Profile_Location":"", в файле конфигурации json node, как показано ниже.

{
"configuration":
{
.//Other Settings
.//Other Settings
.//Other Settings
"Dwebdriver.firefox.profile=E:\\Firefox_Profile_Location":"",
"maxSession":7,
"registerCycle":5000,
"register":true
},
"capabilities":
[

{"browserName":"firefox",
"seleniumProtocol":"WebDriver",
"maxInstances":5,
"platform":"VISTA"
}
]
}

Но работа с указанной выше конфигурацией бросается ниже ошибки.

WebDriverException: профиль Firefox 'E:\Firefox_Profile_Location' named в системном свойстве 'webdriver.firefox.profile' не найден

Благодарим за помощь в настройке профиля firefox со стороны node.

Ответ 1

Я думаю, вам нужно будет использовать имя профиля Firefox, а не местоположение.

"webdriver.firefox.profile":"default"

Посмотрите этот и этот и this

Если вы хотите знать, как создать профиль, следуйте этим и this

Ответ 2

Вам нужно предоставить профиль в объекте capabilities в качестве закодированного в base64 zip:

var fs = require('fs');
capabilities: [
  {
    browserName: 'firefox',
    seleniumProtocol: 'WebDriver',
    maxInstances: 5,
    platform: 'VISTA',
    firefox_profile: new Buffer(fs.readFileSync("./profile.zip")).toString('base64')
  }
]

Кроме того, Firefox создает недостающие файлы для данного профиля. Поэтому в зависимости от ваших потребностей вы должны хранить только необходимые файлы в профиле:

Preferences:  user.js
Passwords:    key3.db
              logins.json
Cookies:      cookies.sqlite
Certificate:  cert8.sqlite
Extensions:   extensions/