我正在使用量角器进行测试,但似乎无法访问JS'窗口'宾语。我甚至尝试在我的html文件中添加一个包含类似
的标签var a = window.location;
然后尝试期待(a)但我无法使它工作,我总是得到未定义的引用......
我应该如何处理以访问浏览器范围内的变量?
答案 0 :(得分:25)
假设您使用的是最新版本的量角器,我们假设> = 1.1.0,希望> = 1.3.1
试图直接从Protractor访问浏览器端的JS代码是行不通的,因为Protractor在NodeJS中运行,每个浏览器端代码都是通过Selenium JsonWireProtocol执行的。
没有进一步的细节,一个工作的例子:
browser.get('https://angularjs.org/');
一线承诺,截至今天,已解决为'1.3.0-rc.3'
browser.executeScript('return window.angular.version.full;');
您可以直接在期望陈述中使用它,因为Protractor期望为您解决承诺:
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
});