【问题标题】:How can I bypass the redirection in Protractor如何绕过量角器中的重定向
【发布时间】:2017-10-25 00:54:53
【问题描述】:

我使用 Angular 2 并且正在编写量角器测试。我的问题是,当用户输入用户名和密码并单击登录按钮页面重定向到中间页面时,该中间页面重定向到另一个页面,该页面提供并验证 JWT(在登录按钮后用户不需要做任何事情,直到页面到达仪表板)但量角器无法进行重定向。有没有办法让量角器进入睡眠状态,直到我伸出仪表板?或者有什么方法可以推荐吗?

browser.sleep(10000) 不起作用。因为当浏览器休眠时,量角器会一直停留在登录页面上,直到失败。

错误信息:

Expected Function to equal 'http://localhost:4200'.
Expected :"http://localhost:4200"
Actual   :{}

【问题讨论】:

  • 量角器不进行重定向是什么意思?所以你想要一个测试来确认它实际上是通过中间页吗?还是只测试最终目标页面?
  • @eLRuLL 测试最终目的地,因为中间页面具有不同的 URL,并且中间页面将我重定向到具有不同 URL 的 JWT 的另一个页面,但作为用户,您无法单击该页面中的任何位置,就像安全检查

标签: javascript protractor angular2-routing


【解决方案1】:

您需要在每个 Promise 上使用 .then,否则 Promise 将在所有同步任务完成后解析。

browser.sleep(10000).then(() => {
    browser.getCurrentUrl().then(url => {
        expect(url).toEqual('http://localhost:4200');
    });
})

理想情况下,您希望使用browser.wait() 等到网址符合预期后再继续。这样,它不会等待10000ms,而是在url匹配时完成等待。

let timeout = 10000;
browser.wait(() => {
    return browser.getCurrentUrl().then(url => {
        return url === 'http://localhost:4200';
    });
}, timeout).thenCatch(err => {
    throw err;
});

当然,这只是对您没有做/需要做的事情的推测,因为您需要发布您的代码。

编辑:进一步解释。如果你运行这个:

console.log('Got here 1');
browser.sleep(0).then(() => {
   console.log('Got here 2');
]);
console.log('Got here 3');

您可能期望输出是:

Got here 1
Got here 2
Got here 3

但输出实际上是:

Got here 1
Got here 3
Got here 2

因为“promise 会在所有同步任务完成后解决”

【讨论】:

  • 您提供的第二个解决方案引发了另一个错误,如下所示:Failed: protractor_1.browser.wait(...).thenCatch is not a function TypeError: protractor_1.browser.wait(...).thenCatch is not a function ------------------------ -------------- 第一个解决方案不起作用,它会将我重定向回我的登录页面,我需要再次登录。
  • 不要使用thenCatch,而是使用catch。重定向回登录页面,这是一种奇怪的行为。我看不出我写的内容如何导致重定向。发布您的代码,我们实际上可以提供帮助。
  • 你写的很完美,我也试过了,问题是,正如我所说,它没有转到中间页面重定向到的页面,所以它无法获取 JWT 令牌,它永远不会真的注册了,等待并不能解决问题,它会尝试转到主页但是因为它没有注册,所以主页将我重定向回登录页面,因为它有身份验证保护
  • 您是否在所有承诺上都使用.then?如果您发布您的步骤和代码,我将能够提供帮助,但在这一点上,我只能推测。
猜你喜欢
  • 1970-01-01
  • 2019-12-09
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 2017-10-04
相关资源
最近更新 更多