2016-03-08 11 views
2

Это мой nightwatch.json файл в данный момент:Есть ли способ не жестко кодировать Selenium Server Path в файле Nightwatch.json?

nighwatch.json file

Мой вопрос: Есть ли способ, чтобы ссылаться на Server_Path .jar файл в качестве средства, чтобы избежать жесткого закодированное значение Селен-сервера standalone- 2.51.0.jar? Мне интересно, потому что наша компания хотела бы иметь обновление версии selenium каждый раз, когда обновляется наш файл package.json. После изменения версии selenium наши тесты прерываются из-за этого жесткого кодированного значения. Я пробовал:

1)

"../node_modules/selenium-server-standalone-jar/jar///*.jar" 

Это не удалось, с сообщением об ошибке в «Невозможно получить доступ к банку file'.There только один файл .jar доступны для выбора.

2) Ссылка на наш файл package.json, который содержит желаемую версию отдельного пакета selenium-server через npm.

Любая помощь или совет были бы очень признательны.

ответ

0

Просто пытайтесь самостоятельно установить Nightwatch, с тем же требованием.

Так вот что я сделал:

1) В nightwatch.json, я уезжаю из имени файла:

... 
"selenium" : { 
    "start_process" : true, 
    "server_path" : "node_modules/selenium-standalone/drivers/selenium-server/", 
... 

2) Отсюда: http://nightwatchjs.org/guide#settings-file вы можете увидеть, что вы можете использовать javascript для изменения конфигурации. Я получаю сервер selenium с помощью selenium-standalone npm package. В package.json на scripts.postinstall у меня есть: selenium-standalone install --basePath %cd%/node_modules/selenium-standalone/drivers

Поэтому я знаю, где установлены драйверы, и может использовать node fs пакет, чтобы узнать имя текущего установленного файла селеном:

const fs = require("fs"); 

module.exports = (function(settings){ 
    var seleniumFileName = 
    fs.readdirSync("node_modules/selenium-standalone/drivers/selenium-server/")[0]; 
    settings.selenium.server_path += seleniumFileName; 
    return settings; 
})(require("./nightwatch.json")); 

работает как Шарм.

0

Вы можете попробовать этот метод:

Ваше имущество nightwatch.json селеном должен выглядеть следующим образом:

... 
"selenium": { 
    "start_process": true, 
    "server_path": "node_modules/selenium-standalone/.selenium/selenium-server/", 
    "log_path": "./reports", 
    "host": "127.0.0.1", 
    "port": 4444, 
    "cli_args": { 
     "webdriver.chrome.driver": "" 
    } 
    } 
... 

Ваш nightwatch.conf.js должен выглядеть следующим образом:

require('babel-core/register'); 
const fs = require("fs"); 

module.exports = ((settings) => { 
    var seleniumFileName = 
    fs.readdirSync("node_modules/selenium-standalone/.selenium/selenium-server/"); 
    settings.selenium.server_path += seleniumFileName; 
    return settings; 
})(require("./nightwatch.json"));