Используйте пользовательский профиль 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
      },  
    }
  }
}
Другие вопросы по тегам