20
我正在用量角器运行测试,但似乎无法访问JS'窗口'对象。我甚至尝试添加在我的HTML文件中的标记,将包含类似从量角器访问窗口对象/浏览器范围
var a = window.location;
,然后尝试想到(一),但我不能使它工作,我总是得到未定义的引用...
我应该如何处理以访问浏览器范围内的变量?
我正在用量角器运行测试,但似乎无法访问JS'窗口'对象。我甚至尝试添加在我的HTML文件中的标记,将包含类似从量角器访问窗口对象/浏览器范围
var a = window.location;
,然后尝试想到(一),但我不能使它工作,我总是得到未定义的引用...
我应该如何处理以访问浏览器范围内的变量?
假设你使用的是最新量角器版本,让我们说> = 1.1.0,希望> = 1.3.1
试图直接从量角器访问浏览器端的JS代码不会起作用,因为在量角器运行NodeJS和每个浏览器端代码通过Selenium JsonWireProtocol执行。
没有进一步的细节,工作示例:
browser.get('https://angularjs.org/');
的一行承诺,截至今日,立志'1.3.0-rc.3'
browser.executeScript('return window.angular.version.full;');
您可以直接在给定的预期声明量角器的使用期待为您解决承诺:
expect(browser.executeScript('return window.angular.version.full;')).
toEqual('1.3.0-rc.3');
长呃例如传递函数而不是字符串加上没有expect
解决你的承诺。即更多的控制和做一些花哨的事情与结果。
browser.driver.executeScript(function() {
return window.angular.version.full;
}).then(function(result) {
console.log('NodeJS-side console log result: ' + result);
//=> NodeJS-side console log result: 1.3.0-rc.3
});
实际上我用量角器版本,我不得不使用 'browser.executeScript( '回归MYVAR;'),然后(函数(MYVAR){...});',但工作完美, 谢谢! – hilnius 2014-10-10 09:06:20
如果我使用这种方法返回窗口对象,我得到“最大调用堆栈大小超出”:( – chrismarx 2015-04-07 20:26:14
@chrismarx可能是一个坏主意,只返回你真正需要的东西;) – 2015-04-08 07:43:55