我正在使用量角器进行测试,但是似乎无法访问JS“窗口”对象。我什至尝试在我的html文件中添加一个包含如下内容的标签
var a = window.location;
然后尝试Expect(a),但我无法使其正常工作,我总是会得到未定义的引用…
我应该如何处理访问浏览器范围内的变量?
假设您使用的是最新版本的量角器,假设> = 1.1.0,希望> = 1.3.1
尝试直接从Protractor访问浏览器端JS代码是行不通的,因为Protractor在NodeJS中运行,并且每个浏览器端的代码都是通过Selenium JsonWireProtocol执行的。
没有进一步的细节,一个工作示例:
browser.get('https://angularjs.org/');
一线承诺,直到今天,决心 '1.3.0-rc.3'
'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解决对您的承诺的情况下传递了函数而不是字符串。即,为了获得更多控制权并为结果做一些花哨的事情。
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 });