2017-05-29 113 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

謝謝。你是對的,我確實需要另一個測試來在下一頁找到一個元素。 –

相關問題