使用最新的量角器版本在全角度2應用程序中運行測試。我有一個功能,導航到登錄頁面,執行登錄過程,然後調用browser.wait,直到出現登錄後出現的元素。然後我的實際測試失敗:'失敗:超時等待異步Angular任務在11秒後完成'。 但是,如果我不等待登錄過程完成,測試通過。所以顯然我缺少一些browser.wait函數。 browser.sleep(x)導致相同的行爲。爲什麼browser.wait會導致量角器無限期地等待異步任務
我的代碼lookes是這樣的:
beforeAll(async() => {
helpers.login().then(() => {
console.log('logged in');
});
});
編輯1: 我改變了等待
this.login =() => {
browser.get(${this.baseUrl}/login);
let emailField = element(by.id('emailID-input'));
let passwordField = element(by.id('passwordID-input'));
let submitBtn = element(by.id('loginSubmitId'));
emailField.sendKeys(credentials.email);
passwordField.sendKeys(credentials.pass);
submitBtn.click();
//browser.driver.sleep(3000);
return browser.wait(() => {
return element(by.xpath('//*[@id="header"]')).isPresent()
.then((isPresent) => {
console.log('Header is Present;', isPresent);
return isPresent;
});
});
};
在實際的測試規格我想登錄運行我的測試之前,條件還包括超時,但問題仍然存在。
let until = protractor.ExpectedConditions;
let header = element(by.xpath('//*[@id="header"]'));
return browser.wait(until.presenceOf(header), 5000);
謝謝你的回答。我之前也看到了ExpectedConditions。我只是不確定要使用哪一個,並且在一箇舊帖子[link](https://github.com/angular/protractor/issues/1994)中,我使用了isPresent()來看@juliemr。 但是超時並沒有解決我的問題,因爲等待條件實際上已經滿了!我已登錄並正確重定向,但量角器似乎仍在等待某個異步任務,因此無法繼續。 – tjeisenschenk