2017-05-29 116 views
0

我试图创建一个简单的测试,点击我的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;”吗?我是否需要找到下一页上的按钮元素?

在这一点上,我很高兴看到我的应用程序页面加载,所以我甚至可以在测试浏览器中看到按钮。它关闭得这么快。这是我的第一个问题,所以我很抱歉,如果它很混乱。谢谢。

回答

0

如前所述通过@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 
 
    }); 
 
});

而且然后添加您的测试

希望它有帮助

+0

谢谢你,你的回答非常有帮助,并解决了我的问题。 –

0

您的浏览器关闭,因为测试执行已完成。因此,下一步是在下一个加载的页面上找到一个按钮或其他元素。

我建议使用browser.wait(...)方法与Expected Conditions等到您的下一页完全加载并且您的元素变得可交互。

我希望这能解决你的问题,否则请告诉我,让我提供另一种解决方案;-)

+0

谢谢。你是对的,我确实需要另一个测试来在下一页找到一个元素。 –

相关问题