这是我目前的nightwatch.json文件:
我的问题:有没有办法引用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文件。
非常感谢任何帮助或建议。
答案 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"));