我试图在量角器上设置一个全局变量以在所有描述块中使用。
var glob = 'test'; describe('glob test', function () { it('should set glob', function () { browser.get('http://example.com/test'); browser.executeScript(function () { window.glob = glob; }); }); });
但这返回了以下错误:
Message: [firefox #2] UnknownError: glob is not defined
所以我试图以这种方式在conf.js中设置变量glob:
exports.config = { ..., onPrepare: function () { global.glob = 'test'; } };
仍然有相同的错误。
如何在量角器测试中正确添加全局变量?
可以借助params属性从量角器配置文件设置全局变量:
params
exports.config = { // ... params: { glob: 'test' } // ... };
您可以使用规范中访问它browser.params.glob。
browser.params.glob
params对象将直接传递到Protractor实例,并且可以从浏览器作为browser.params访问。它是一个任意对象,可以包含测试中可能需要的任何内容。可以通过命令行将其更改为:
protractor conf.js --params.glob 'other test'
如果脚本作为函数对象提供,则该函数将转换为字符串以注入到目标窗口中。除脚本外提供的所有参数都将作为脚本参数包含在内,并且可以使用arguments对象进行引用。
因此,在这种情况下,JavaScript作用域不起作用,您传递给的函数browser.executeScript将不会有来自规范的闭包变量,例如browser。但是您可以显式传递这些变量:
browser.executeScript
browser
browser.executeScript(function (glob) { // use passed variables on the page console.log(glob); }, browser.params.glob);