在我的index.html,我明确地说:角量角器:在浏览器环境中执行脚本
window.myAppInstance = new MyApp.myAppConstructor();
在我的待办事项-spec.js,我有以下设置:
describe('my web page', function() {
it('should have a "myAppInstance" object on the window', function() {
browser.get('https://my.web.page.com');
function myTest() {
return Object.keys(window.myAppInstance).sort();
};
var p = browser.driver.executeScript(myTest);
p.then(function(ret) {
console.log("yay");
console.log(ret);
}, function() {
console.log("error");
console.log(arguments);
});
});
});
但量角器没有找到我的应用程序。相反,它认为null或undefined:
error
{ '0':
{ [WebDriverError: unknown error: Cannot convert undefined or null to object
(Session info: chrome=50.0.2661.102)
... and more garbage
但是,从Chrome的控制台,我可以运行
window.myAppInstance
蛮好的,它正确地打印出的对象。
如何从我的量角器测试中访问此窗口对象?
编辑1:对构造函数更加明确。
编辑2:在我的应用程序中,我正在使用angular的manual bootstrapping。经进一步调查,我可以将此行添加到我的测试:
<snip>
browser.get('https://my.web.page.com');
**browser.pause()**
<snip>
我现在步骤: 1)敲击F12带来了Chrome的开发者工具 2)看在控制台中。注意错误。我的应用崩溃了。 3)手动点击浏览器上的刷新按钮。 4)注意应用程序如何刷新,并且一切都很精美。在困惑中挠了挠头。结论是它可能以某种方式,与
browser.get('https://my.web.page.com');
程序启动页是从打开浏览器并输入该网址,打破它足够的不同。
我想知道现在,如何用量角器运行测试会导致我的应用程序失败?
感谢您的回答!听起来很有希望。当我回到我的电脑时,我会尝试。 – Bill
有趣的是你应该使用动词'promise'。 – targumon