Protractor e2e测试登录重定向
Protractor e2e Tests Login Redirection
目前有一个部分端到端测试,输入用户名/密码并单击"登录"。
它成功地做到了这一点,但在"谢谢你登录了"页面结束,而不是像我通过浏览器登录时那样重定向到"帐户门户"或"仪表板"。''
这个项目的新手,但我们正在使用OAuth。
主要问题:这听起来像是需要http嘲讽吗
更多详细信息:
spec.js
describe('login page', function() {
browser.driver.get('http://url.path/login');
it('should render login page', function() {
// Checking the current url
var currentUrl = browser.driver.getCurrentUrl();
expect(currentUrl).toMatch('/login');
});
it('should sign in', function() {
// Find page elements
var userNameField = browser.driver.findElement(By.id('username'));
var userPassField = browser.driver.findElement(By.id('password'));
var userLoginBtn = browser.driver.findElement(By.id('loginbtn'));
// Fill input fields
userNameField.sendKeys('test@user.com');
userPassField.sendKeys('1234');
// Ensure fields contain what we've entered
expect(userNameField.getAttribute('value')).toEqual('test@user.com');
expect(userPassField.getAttribute('value')).toEqual('1234');
// Click to sign in - waiting for Angular as it is manually bootstrapped.
userLoginBtn.click().then(function() {
browser.waitForAngular();
expect(browser.driver.getCurrentUrl()).toMatch('/success');
}, 10000);
});
});
如果我快速点击测试窗口,我可以看到它成功地到达"成功"页面,但它不会重定向到仪表板(当你通过浏览器手动登录时,它会重定向)。如何继续此测试以保持登录状态并像用户一样访问仪表板?
//新的项目,角度和量角器。
EDIT-总结一下:
- 我希望量角器在/login页面上开始测试
- Protractor应查找并填写用户名和密码字段,然后单击"登录"
- Protractor成功登录,查看/谢谢页面,然后立即重定向到用户的/dashboard页
- 也许我错过了一个步骤,我们需要在Protractor测试中手动重定向吗
(当用户通过浏览器手动登录时,他们看不到/谢谢页面-这是一个快速重定向到/仪表板的页面。Protractor无法访问仪表板页面。
你的帖子缺乏信息,但我会尝试做一个假设:
我怀疑你的"谢谢你登录了"页面会在超时后重定向javascript。
因此,在您单击"登录"后,浏览器加载"谢谢您登录"页面,由于.then()
的第二个参数不起任何作用,browser.waitForAngular()
失败,因为该页面上没有角度。
您应该尝试使用类似browser.driver.wait()
的具有合理超时的东西来检测url更改(此处描述:https://github.com/angular/protractor/issues/610)并在浏览器到达CCD_ 5页面后触发CCD_。
您尝试过使用显式等待吗?
return browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /success/.test(url);
});
}, 10000);
你的代码应该是这样的:
// Click to sign in - waiting for Angular as it is manually bootstrapped.
userLoginBtn.click();
return browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return /success/.test(url);
});
}, 10000);
相关文章:
- 我尝试在登录脚本中使用ajax,但页面不会重定向
- 访问NeedLogin操作后不重定向到登录页面
- 登录后重定向,缓存页面问题-Javascript
- Framework7:登录重定向
- 在页面加载之前检查登录和重定向
- 如何在ASP.NET中创建重定向到登录页
- 意思是.js - 登录后重定向用户 - 在本地工作,但在部署时不起作用
- 登录尝试和重定向
- Laravel:在 ajax 请求的会话过期后重定向到登录
- 用户使用铁路由器登录后如何重定向
- 从登录页重定向到主页
- 登录后PHP登录脚本重定向不起作用
- 如何基于电子邮件地址域重定向到电子邮件登录页面
- Facebook登录重定向问题
- 如果用户尚未登录Angular JS,请重定向至登录页面
- 重定向“如果确认了电子邮件,则将用户重定向到登录页”
- 防止Angular网站上未经授权的用户在重定向到登录之前看到网站的最佳方式
- 如果未处于登录状态,如何重定向到登录页面,登录后重定向到原始页面
- AngularFire,登录身份验证和重定向并不完全有效
- 从angularjs重定向登录页面到欢迎页面