Protractor - 听用户导航
Protractor - Listen to user navigation
我目前正在使用 Protractor 测试 Angular 2+ 项目的端到端功能。
当用户必须使用外部提供商登录时,我的问题就出现了。在 APP 中有一个按钮可以将用户重定向到外部登录,如果用户成功登录,提供商 returns 用户使用令牌访问 APP,angular 处理会话。
示例:
- http://example.com 中的用户点击了 "Log in" 按钮。
- 应用程序将用户重定向到 http://authproviderexample.com/login。
- 用户必须使用用户名和密码登录。
- 如果正确,身份验证提供程序将用户重定向到具有会话令牌的 APP http://example.com/login?token=ABCDEFG123456789
- 应用程序处理令牌以便用户登录。
我想跳过该外部登录并 "mock" 它以便我可以检查我的应用程序是否重定向到外部并正确处理令牌。这样我的 App 测试就独立于外部登录提供商。
我想以某种方式拦截导航,以便我可以告诉 Angular:如果用户被重定向到“http://authproviderexample.com/login”而不是将他重定向到“http://example.com/login?token=ABCDEFG123456789”。我将存储一个永久令牌,这样我就可以在不依赖外部服务的情况下登录。
你为什么不做一些像这样简单的事情
async function login(username, password) {
await loginButton.click();
if (await browser.getCurrentUrl() === "http://authproviderexample.com/login") {
await browser.get("http://example.com/login?token=ABCDEFG123456789")
return
} else {
// else logic
}
}
我目前正在使用 Protractor 测试 Angular 2+ 项目的端到端功能。
当用户必须使用外部提供商登录时,我的问题就出现了。在 APP 中有一个按钮可以将用户重定向到外部登录,如果用户成功登录,提供商 returns 用户使用令牌访问 APP,angular 处理会话。
示例:
- http://example.com 中的用户点击了 "Log in" 按钮。
- 应用程序将用户重定向到 http://authproviderexample.com/login。
- 用户必须使用用户名和密码登录。
- 如果正确,身份验证提供程序将用户重定向到具有会话令牌的 APP http://example.com/login?token=ABCDEFG123456789
- 应用程序处理令牌以便用户登录。
我想跳过该外部登录并 "mock" 它以便我可以检查我的应用程序是否重定向到外部并正确处理令牌。这样我的 App 测试就独立于外部登录提供商。
我想以某种方式拦截导航,以便我可以告诉 Angular:如果用户被重定向到“http://authproviderexample.com/login”而不是将他重定向到“http://example.com/login?token=ABCDEFG123456789”。我将存储一个永久令牌,这样我就可以在不依赖外部服务的情况下登录。
你为什么不做一些像这样简单的事情
async function login(username, password) {
await loginButton.click();
if (await browser.getCurrentUrl() === "http://authproviderexample.com/login") {
await browser.get("http://example.com/login?token=ABCDEFG123456789")
return
} else {
// else logic
}
}