Используйте пользовательский профиль Firefox с драйвером селен-гена nightwatch.js
Я искал около 8 часов и прочитал почти все связанные темы по этому вопросу, но пока не нашел решения. Самым близким, что я нашел, является https://github.com/nightwatchjs/nightwatch/issues/1368 однако этот вопрос был решен путем обновления автономного сервера selenium, и я использую все последние версии.
Мне нужно запустить браузер Firefox с определенным профилем, который я уже настроил и назвал "nightwatch". Моя система pref: win 10 64-битная Java-версия "1.8.0_121" npm -version 3.10.10 geckodriver-v0.18.0-win64 Selenium автономная версия 3.5.0 Firefox для разработчиков, версия 56.0b5 (64-разрядная версия)
Мой файл nightwatch.json:
{
"src_folders" : ["nw/tests"],
"output_folder" : "nw/reports",
"globals_path" : "nightwatch.globals.js",
"test_workers": {
"enabled": true,
"workers": "auto"
},
"selenium" : {
"start_process" : true,
"server_path" : "./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.5.0.jar",
"log_path" : "nw/logs",
"host" : "127.0.0.1",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "./node_modules/chromedriver/lib/chromedriver/chromedriver.exe",
"webdriver.ie.driver" : "",
"webdriver.gecko.driver": "geckoDriver/geckodriver.exe"
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://google.com",
"selenium_port" : 4444,
"selenium_host" : "localhost",
"silent": true,
"screenshots" : {
"enabled" : true,
"path" : ""
},
"desiredCapabilities": {
"browserName": "firefox",
"javascriptEnabled": true,
"acceptSslCerts": true,
"marionette": false
}
}
}
}
Я пробовал добавлять
"webdriver.firefox.profile": "nightwatch"
как в селене, так и в настройках теста. Браузер запускается с нужным профилем, но URL из моего теста (пример: некоторый URL) никогда не вводится, поэтому мой тест всегда терпит неудачу.
Если я укажу "marionette":true, как описано выше, Firefox не запускается с нужным профилем "nightwatch", и, кроме того, мой тест всегда не проходит на 1-й строке.waitForElementVisible("body", 1000)
Я много искал и читал по этому вопросу и не нашел что-то, что мне поможет. Я понял, что у драйвера геккона есть возможность получать аргументы, в которых можно указать профиль firefox, однако мои знания очень ограничены по этому вопросу (4 дня в ночной страже), и я просто не могу разрешить его в данный момент. Я даже пытался изменить файл selenium.js в. \ Nightwatch \ lib \ runner
со следующим:
this.cliOpts = [
'-Dwebdriver.firefox.profile=nightwatch', //i added this line in the file .\node_modules\nightwatch\lib\runner\selenium.js
'-jar', this.settings.selenium.server_path,
'-port', this.port
];
Происходит та же проблема: браузер Firefox открывается с нужным профилем, но тест просто не выполняется, и через 30 секунд ожидания он завершается неудачей, а журнал сообщает "java.lang.NullPointerException".
Добавлено содержание, чтобы отразить комментарии ниже Когда я поставил следующий код
"cli_args" : {
"webdriver.ie.driver" : "",
"webdriver.gecko.driver": "geckoDriver/geckodriver.exe",
"webdriver.firefox.profile": "nightwatch"
}
Firefox запускается с нужным профилем, но тест не выполняется (не вводится даже тестовый URL (как упомянуто выше). Поскольку журнал слишком длинный, чтобы включить его в исходное сообщение, он доступен на диске Google https://drive.google.com/open?id=0Bz4bu5Fo5Vq_NEhEZFlnSDBjWm8
1 ответ
Обновлен со всем моим конфигом, измените настройки и местоположение, если вам нужно.
module.exports = {
"src_folders": [
"scripts/test"// Where you are storing your Nightwatch e2e tests
],
"output_folder": "./reports", // reports (test outcome) output by nightwatch
"selenium": { // downloaded by selenium-download module (see readme)
"start_process": true, // tells nightwatch to start/stop the selenium process
"server_path": "./node_modules/nightwatch/bin/selenium.jar", // the standard alone selenium server jar
"host": "127.0.0.1",
"port": 4444, // standard selenium port
"cli_args": { // chromedriver is downloaded by selenium-download (see readme)
"webdriver.chrome.driver" : "C:/chrome-win32/chromedriver.exe",
"webdriver.gecko.driver" : "geckodriver.exe", //firefox driver location
"webdriver.ie.driver" : "IEDriverServer.exe"
}
},
"test_settings": {
"default": {
"screenshots": {
"enabled": false, // if you want to keep screenshots
"path": "" // save screenshots here
},
"globals": {
"waitForConditionTimeout": 5000 // sometimes internet is slow so wait.
},
"desiredCapabilities": { // use Chrome as the default browser for tests
"browserName": "chrome",
},
},
"chrome": {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true, // turn off to test progressive enhancement
"chromeOptions" :{
// "args": [
// 'headless',
// // Use --disable-gpu to avoid an error from a missing Mesa
// // library, as per
// // https://chromium.googlesource.com/chromium/src/+/lkgr/headless/README.md
// 'disable-gpu',
// ],
"binary": 'C:/chrome-win32/chrome.exe'
},
"selenium": {
"cli_args": {
"webdriver.chrome.driver" : "C:/chrome-win32/chromedriver.exe",
},
},
},
},
"firefox":{
"desiredCapabilities": {
"browserName": 'firefox',
"javascriptEnabled": true,
"marionette": false,
"acceptSslCerts": true,
"acceptInsecureCerts" :true
},
"selenium": {
"cli_args": {
"webdriver.gecko.driver" : "geckodriver.exe" ,
//"webdriver.firefox.bin" : 'C:/tools/firefox_v39/firefox.exe'
},
},
},
"ie" :{
"desiredCapabilities": {
"browserName": 'internet explorer',
"javascriptEnabled": true,
"acceptSslCerts": true
},
}
}
}