登录非Angular页面后遇到Angular应用程序时遇到问题
我试图创建一个简单的测试,点击我的Angular应用程序中的按钮。但是,当我导航到我的Angular应用程序时,它首先将我重定向到非Angular登录页面。登录非Angular页面后遇到Angular应用程序时遇到问题
因此,用户的体验如下:用户导航到https://test.contracts365.com,然后被重定向到登录页面,在那里他们输入用户名和密码,然后单击提交按钮。然后加载包含可点击的按钮的应用页面。
我有我的代码工作,当我运行量角器,我看到一个铬窗口打开,我看到登录页面出现,我可以看到文本填入'用户名'和'密码'字段。但是,在此之后,Chrome浏览器关闭。我没有看到我的应用页面加载包含我想单击的按钮。
我使用尝试登录是如下的代码(注意:用户名和密码的文本被改变的东西假的,所以我可以张贴我的问题)
describe('Go to Test site', function() {
it('and login', function() {
browser.get('https://test.contracts365.com');
browser.ignoreSynchronization=true;
element(by.name('login')).sendKeys('username');
element(by.id('cred_password_inputtext')).sendKeys('password');
element(by.id('cred_sign_in_button')).click();
//browser.ignoreSynchronization=false;
});
});
什么是下一个步骤?我应该使用“browser.ignoreSynchronization = false;”吗?我是否需要找到下一页上的按钮元素?
在这一点上,我很高兴看到我的应用程序页面加载,所以我甚至可以在测试浏览器中看到按钮。它关闭得这么快。这是我的第一个问题,所以我很抱歉,如果它很混乱。谢谢。
如前所述通过@Batajus你没有任何代码,所以测试执行完毕。
如果您只需要登录一次,就可以在beforeAll()
放置代码,甚至让为它的方法保存所有登录的逻辑,这样的事情
function logon(username, password) {
var EC = protractor.ExpectedConditions;
browser.get('https://test.contracts365.com');
browser.ignoreSynchronization = true;
// Wait for the url to be changed to the logon page
browser.wait(EC.urlContains('login.microsoftonline.com'), 5000);
// Do the logon magic
element(by.name('login')).sendKeys(username);
element(by.id('cred_password_inputtext')).sendKeys(password);
element(by.id('cred_sign_in_button')).click();
browser.ignoreSynchronization = false;
// Wait till you are back on the page
browser.wait(EC.urlContains('test.contracts365.com'), 5000);
}
describe('Go to Test site', function() {
beforeAll(function() {
logon('[email protected]', 'Welcome123')
});
it('should do some tests', function() {
// do some tests
});
});
而且然后添加您的测试
希望它有帮助
您的浏览器关闭,因为测试执行已完成。因此,下一步是在下一个加载的页面上找到一个按钮或其他元素。
我建议使用browser.wait(...)
方法与Expected Conditions等到您的下一页完全加载并且您的元素变得可交互。
我希望这能解决你的问题,否则请告诉我,让我提供另一种解决方案;-)
谢谢。你是对的,我确实需要另一个测试来在下一页找到一个元素。 –
谢谢你,你的回答非常有帮助,并解决了我的问题。 –