pie*_*ara 21 javascript angularjs protractor
我试图在量角器上设置一个全局变量,用于所有描述块.
var glob = 'test';
describe('glob test', function () {
it('should set glob', function () {
browser.get('http://example.com/test');
browser.executeScript(function () {
window.glob = glob;
});
});
});
Run Code Online (Sandbox Code Playgroud)
但这会返回以下错误:
Message:
[firefox #2] UnknownError: glob is not defined
Run Code Online (Sandbox Code Playgroud)
我也看了这个问题:量角器angularJS全局变量
所以我试图以这种方式在conf.js中设置变量glob:
exports.config = {
...,
onPrepare: function () {
global.glob = 'test';
}
};
Run Code Online (Sandbox Code Playgroud)
仍然有同样的错误.
如何在量角器测试中添加正确的全局变量?
Mic*_*nov 40
可以在params属性的帮助下从Protractor配置文件中设置全局变量:
exports.config = {
// ...
params: {
glob: 'test'
}
// ...
};
Run Code Online (Sandbox Code Playgroud)
您可以使用规范访问它browser.params.glob.
请参阅参考配置文件.
params对象将直接传递给Protractor实例,并可以作为browser.params从您的测试中访问.它是一个任意对象,可以包含测试中可能需要的任何内容.这可以通过命令行更改为:
protractor conf.js --params.glob 'other test'
更新:
如果脚本作为函数对象提供,则该函数将转换为字符串以注入目标窗口.除脚本之外提供的任何参数都将作为脚本参数包含在内,并且可以使用arguments对象进行引用.
因此,在这种情况下JavaScript范围不起作用,传递给的函数browser.executeScript将不具有任何来自规范的闭包变量browser.但是你可以明确地传递这些变量:
browser.executeScript(function (glob) {
// use passed variables on the page
console.log(glob);
}, browser.params.glob);
Run Code Online (Sandbox Code Playgroud)
ale*_*cxe 24
您还可以onPrepare()使用global以下方式设置全局变量:
onPrepare: function () {
global.myVariable = "test";
},
Run Code Online (Sandbox Code Playgroud)
然后,您将按myVariable原样使用整个测试.
这实际上是如何protractor,browser以及其他内置全局变量都有了全球范围内:
Runner.prototype.setupGlobals_ = function(browser_) {
// Export protractor to the global namespace to be used in tests.
global.protractor = protractor;
global.browser = browser_;
global.$ = browser_.$;
global.$$ = browser_.$$;
global.element = browser_.element;
global.by = global.By = protractor.By;
// ...
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用此方法会污染全局范围/命名空间,请注意.
| 归档时间: |
|
| 查看次数: |
28956 次 |
| 最近记录: |