我正在编写一个javascript库,当某些事件发生时,我想存储一个可以从NightwatchJs测试中访问的JSON变量,以验证事件生成的数据。
我曾经将它存储为全局变量(例如
window.debugLog = { message: "something", timestamp: 1111, eventType: "click", other: "stuff" };
)
并使用
在nightwatch中检索它browser.execute("return window.debugLog;", [], function(result){ debugLog = result.value;})
不幸的是,当我在Browserstack上运行Nightwatch测试时,每个浏览器/设备似乎都不可靠。由于Appium无法执行Js功能,因此误报并不罕见。
我想知道是否有人对更可靠的替代品有任何建议。一块饼干?元标记?一个隐藏的标签?
答案 0 :(得分:0)
将其写入文件,将该文件用于以后使用它的测试。
我在custom_commands文件夹中有一个名为helperFunctions.js的文件,在其中,这是一个更有用的函数/方法:
saveToFile : function(client, path, data) {
this.fs = fs;
buffer = new Buffer(data);
fs.open(path, 'w', function(err, fd) {
if (err) {
throw 'error opening file: ' + err;
}
fs.write(fd, buffer, 0, buffer.length, null, function(err) {
if (err) throw 'error writing file: ' + err;
return fs.close(fd, function() {
console.log('File write: ' + path + ' has been updated.' );
})
});
})
},
通过这种方式,可以调用它来从任何测试中写入数据:
this.helperFunctions.saveToFile(client, "conf/usefulVariable.js", "module.exports = {\"default\" : {},\"test_env\" : { myGlobal: " + someGlobal + "}};")
在需要使用它的测试文件中:
var usefulVar = require("../conf/usefulVariable.js");
您可能需要/想要JSON.stringify或根据需要进行解析。