2017-01-15 14 views
-1

分度器で基本的なテストを作成して要素をクリックし、新しいページで要素が存在するかどうかを確認しますが、分度器は待機していないようで、新しいページが読み込まれます。私が探している要素は両方のページで利用できるので、分度器は新しいページが読み込まれる前に古いページの要素を見ています。誰かが私に間違っていることを教えてもらえますか?分度器がページの読み込みを待っていない

it('should check when new page is loaded', function() { 
button.click().then(function(){ 
    return expect(newElement).to.exist; 
}); 
+0

ページタイトルなどの最初の項目として確認するために、すべてのページで一意のものを使用してください。 –

答えて

3

最初に、「getPageTimeout」変数を分度器構成ファイルに追加します。

既に使用していない場合は、アプリケーションの平均ページ読み込み時間に基づいてグローバルページタイムアウトを設定します。

conf.js

getPageTimeout: 120000,//change it based on your app response time 

それはあなたが探している実際の要素をチェックする前に、次のページ(前ページからその異なると仮定して)のページタイトルを確認し、その後も解決しない場合。

it('should check when new page is loaded', function() { 
button.click().then(function(){ 
    browser.getCurrentUrl(); 
    browser.getTitle().then(function (title) { 
      expect(title).toEqual('Next Page Title'); 
     }); 
    return expect(newElement.isDisplayed()).toBeTruthy(); 
}); 

予期された条件を使用することができます。明示的に待機するための条件がいくつかあります。ケースでは、存在になるための要素を待ちたい:

var EC = protractor.ExpectedConditions; 

var e = element(by.id('xyz')); 
browser.wait(EC.presenceOf(e), 10000); 

expect(e.isPresent()).toBeTruthy(); 
0

あなたは

jasmineNodeOptsファイルの設定方法の下に使用することができます:{

showColors:真、

includeStackTrace: true, 

をdefaultTimeoutInterval:1440000

}、

Specファイルでは、ページとオブジェクトの可視性に応じて待ち時間をカスタマイズできます。

browser.sleep(20000);

待ち時間を適切にカスタマイズすると、上記の方法がすべての場合にうまく動作することを願っています。

関連する問題