我刚刚开始使用量角器测试角单页应用程序的e2e。我已经从登录页面开始了测试。这是我为失败案例写的测试
Tesr案例1
it('Login with wrong email', function() {
loginPage.get();
loginPage.setEmail('xxxxx@xxxx.com');
loginPage.setPassword('12345678');
loginPage.submit()
expect(browser.getCurrentUrl()).toBe(loginPage.appUrl + '/#/login')
})上面的代码完美地工作在上。我正在用url测试登录失败,如果url没有更改,请将其视为失败。(Q1)这是正确的方法吗?如果我检查错误消息,我见过这样的例子,所以用url测试登录失败。
测试用例2
这是我在那里得到的错误,测试用例来检查成功登录。
it('Login with correct email', function() {
loginPage.get();
loginPage.setEmail('YYYY@YYYY.YY');
loginPage.setPassword('12345678');
loginPage.submit()
expect(browser.getCurrentUrl()).toBe(loginPage.appUrl + '/#/home')
})如果我不使用browser.getCurrentUrl(),那么上面的测试用例也能很好地工作,当我使用getCurrentUrl时会得到以下错误,这个loginPage.submit()是成功的登录尝试并重定向到另一个路由。
在11秒后超时等待量角器与页面同步。请看https://github.com/angular/protractor/blob/master/docs/faq.md。下列任务尚未完成
我在谷歌上搜索了这个问题,找到了很多解决方案,但似乎都没有效果。
试用了解决方案
allScriptsTimeout、getPageTimeout添加到量角器配置文件中。defaultTimeoutInterval添加到配置文件中timeout错误消息时,我发现这个问题是link1,link2,我尝试了所有不起作用的基本上所有的解决方案都说要使用wait、sleep、waitForAngular。我尝试了所有的thenable时尚,因为所有的回报承诺。我发现这个问题是因为使用了browser.getCurrentUrl。让我知道我做错了什么,并想深入了解e2e测试与量角器。
我想知道量角器的基础知识,它是如何在路由改变上工作的,以及像$http这样的异步用户操作是如何由量角器处理的。我是否应该明确地使用承诺等。
任何帮助都是非常感谢的。
发布于 2016-04-20 03:48:56
这里的问题不是browser.getCurrentUrl(),正如您在正确运行的测试中提到的那样,该部分运行良好。
当量角器告诉您Timed out waiting for Protractor to synchronize with the page after 11 seconds时,它会给您一个很大的提示,它的意思是它无法抓住您的角页--或者您的角页从来没有完成过加载来提前执行测试。当您在页面上使用大量$timeout或过度轮询时,就会发生这种情况。要调试此问题,请使用jasmine-spec-reporter运行您的测试套件,它将报告页面正在等待的功能(该功能正在阻止同步)。
https://stackoverflow.com/questions/36654778
复制相似问题