最新の分度器バージョンを使用して、すべてのangular2アプリケーションでテストを実行します。私は1つの関数を持っています。これはログインページにナビゲートし、ログインプロセスを行い、ログイン後に表示される要素までbrowser.waitを呼び出します。その後、私の実際のテストは「Failed:非同期のAngularタスクが11秒後に終了するのを待ってタイムアウトしました」と失敗します。 しかし、ログインプロセスが完了するのを待たずにテストに合格した場合。だから、明らかに私はbrowser.wait関数で何かを見逃しています。 browser.sleep(x)は同じ動作をします。私は私のテストを実行する前にログインする実際のテストスペックでbrowser.waitが非同期タスクのために分度器を無期限に待機させる理由
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;
});
});
};
:
beforeAll(async() => {
helpers.login().then(() => {
console.log('logged in');
});
});
編集1:
私のコードは次のようなものlookes を私は待機を変更しましたまた、タイムアウトが含まれるようにするには問題はありますが、問題は解決しません。
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