我们有一个使用UI路由器构建的应用程序,其中包含一些路由解析。我们正试图对它进行一些量角器测试,但似乎默认的browser.get()不等待ui路由器完全解析
这是我们的简单测试
describe('coach pages', function() {
beforeEach(function() {
browser.get("/");
});
it('should have the right title', function() {
expect(browser.getTitle()).toBe('The Title');
});
it('should have a heading', function() {
expect(element(by.css('#test')).isPresent()).toBeTruthy();
});
});
第一个传递,它找到页面标题,但标题不是
如果我们添加此
browser.sleep(1000);
在第二个期待它通过之前?
不应该是量角器等待结果默认完成?是与UI路由器发生某种冲突吗?
值得补充的是,任何没有解决它的路线似乎都按预期等待它,它只影响附加了解决方案的路线?
答案 0 :(得分:0)
的引用在执行任何操作之前,Protractor要求Angular等到 页面已同步。这意味着所有超时和http 请求已完成。
因此,如果您希望量角器等待方法完成,请使用$ timeout包装它。 $ timeout默认时间为0秒。但是,您确实需要实现$ timeout调用$ apply,这将启动摘要周期。这可能具有性能影响。你只需要自己尝试一下。
<强>更新强>
旧答案不是最好的方法,与我后来使用的方法完全不同。
等待加载页面的最可靠方法是等待在该页面上显示或呈现元素。从这个意义上说,这更可靠。