首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >量角器browser.getCurrentUrl()不工作路线改变

量角器browser.getCurrentUrl()不工作路线改变
EN

Stack Overflow用户
提问于 2016-04-15 18:49:40
回答 2查看 6.2K关注 0票数 3

我刚刚开始使用量角器测试角单页应用程序的e2e。我已经从登录页面开始了测试。这是我为失败案例写的测试

Tesr案例1

代码语言:javascript
运行
复制
  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

这是我在那里得到的错误,测试用例来检查成功登录。

代码语言:javascript
运行
复制
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。下列任务尚未完成

我在谷歌上搜索了这个问题,找到了很多解决方案,但似乎都没有效果。

试用了解决方案

  1. allScriptsTimeoutgetPageTimeout添加到量角器配置文件中。
  2. defaultTimeoutInterval添加到配置文件中
  3. 所以的问题中发现link1link2和这个github 问题,这三种方法都试过了,但似乎都没有用
  4. 当我在googled中搜索timeout错误消息时,我发现这个问题是link1link2,我尝试了所有不起作用的

基本上所有的解决方案都说要使用waitsleepwaitForAngular。我尝试了所有的thenable时尚,因为所有的回报承诺。我发现这个问题是因为使用了browser.getCurrentUrl。让我知道我做错了什么,并想深入了解e2e测试与量角器。

我想知道量角器的基础知识,它是如何在路由改变上工作的,以及像$http这样的异步用户操作是如何由量角器处理的。我是否应该明确地使用承诺等。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-18 13:18:28

在理想世界中,您不应该添加任何等待,Protractor应该自然地等待角做好准备,并且在一般情况下与它同步工作。

不幸的是,在现实世界中,常常需要增加等待。但是,与通常应该避免的硬编码browser.sleep()调用相比,更喜欢具有特定条件的显式Waits。在本例中,我们可以添加等待特定URL的等待,请参阅这个答案

票数 4
EN

Stack Overflow用户

发布于 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运行您的测试套件,它将报告页面正在等待的功能(该功能正在阻止同步)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36654778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档