有没有办法不在Nightwatch.json文件中硬编码Selenium Server Path?

时间:2016-03-08 20:53:09

标签: nightwatch.js selenium-server

这是我目前的nightwatch.json文件:

nighwatch.json file

我的问题:有没有办法引用server_path .jar文件作为避免selenium-server-standalone-2.51.0.jar的硬编码值的方法?我很想知道,因为我们的公司希望每次我们的package.json文件更新时都更新selenium版本。一旦硒版本发生变化,我们的测试就会因为这个硬编码值而中断。我试过了:

1)

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

此操作失败,并显示错误消息“无法访问jar文件'。只有一个.jar文件可供选择。”

2)通过npm引用包含所需版本的selenium-server-standalone软件包的package.json文件。

非常感谢任何帮助或建议。

2 个答案:

答案 0 :(得分: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-standalone npm package获取了selenium服务器。 在package.json scripts.postinstall我有:selenium-standalone install --basePath %cd%/node_modules/selenium-standalone/drivers

因此我知道安装驱动程序的位置,并且可以使用node fs包找出当前安装的selenium文件的名称:

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"));

像魅力一样运行。

答案 1 :(得分:0)

你可以尝试这种方法:

您的nightwatch.json selenium属性应如下所示:

...
"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"));