2016-12-12 7 views
2

最新の分度器バージョンを使用して、すべての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); 

答えて

2

browser.wait()メソッドで待機時間について言及する必要があります。最大待機時間に達すると、分度器は待機状態に基づいてタイムアウト例外をスローします。また、直接isPresent()メソッドの代わりにExpectedConditionsを使用してみてください。分度器で

var EC = protractor.ExpectedConditions; 
var ele = element(by.xpath('//*[@id="header"]')); 
return browser.wait(EC.presenceOf(ele),5000); //It will wait for 5 secs 
+0

ご回答ありがとうございます。以前はExpectedConditionsも見たことがあります。私はちょうどどちらを使うべきかわからず、古い投稿[link](https://github.com/angular/protractor/issues/1994)でisPresent()を使って@juliemrを見た。 しかし、待ち時間の条件が実際に満たされているため、タイムアウトで問題が解決されませんでした。私はログインして正しくリダイレ​​クトされていますが、分度器はまだ非同期タスクを待っていると思われ、したがって続行しません。 – tjeisenschenk

0

デフォルトgetPageTimeoutがあります:10秒に設定されているをtimeout_in_millis。ページの読み込みに10秒以上かかるため、タイムアウトエラーメッセージが表示されています。

これはconf.jsファイルで指定できます。

+0

はい、いいえ、タイムアウトの原因となっているタスクが保留中のようですが、待機またはスリープと関係しています。私はすでにタイムアウトを増やしてみましたが、これは役に立たない... – tjeisenschenk

関連する問題