2017-11-30 2 views
1

はあなたがここに行けばE2Eテストジャスミン/分度器でシミュレートタイプ:$0.scrollIntoView()イオンは3無限スクロールは

無限スクロールは実行されません。

プログラム上、分度器のコンテキストで無限スクロールをトリガーする方法はありますか?

答えて

3

あなたの例のスクロールの実装は、scrollIntoViewが呼び出されたときに予想される範囲から離れていると思われるスクロールの速度/速度に依存しています。

1つの回避策は、妥当な時間に複数のスクロールイベントを発生させることによって円滑なスクロールをシミュレートすることです。アイデアは、実際のユーザーの行動を可能な限り再現することです。私の場合、私は、引数としてion-infinite-scrollを使用し、

$0.scrollIntoView({behavior: "smooth", block: "end"}); 
+0

おかげで:より多くのコンテンツがイオンにロードされているかどうかを確認するために

完全なテスト!テスト目的のために完全に動作します。 –

0

受け入れ答えを使用する:

一部のブラウザでは、すでに(クローム62でサポートされている)scrollIntoView経由のオプションを提供します。

describe('Scroll',() => { 
    it('should load more when reached end', async() => { 
     let list = getList(); 

     let currentCount = await list.count(); 

     const refresher = element(by.tagName('ion-infinite-scroll')).getWebElement(); 

     let count = 0; 

     while(true){ 
      browser.executeScript(`arguments[0].scrollIntoView({behavior: "smooth", block: "end"});`, refresher); 
      browser.sleep(1000); // wait for data to be loaded from api 
      list = getList(); 
      let newCount = await list.count(); 
      expect(newCount).toBeGreaterThanOrEqual(currentCount) 
      expect(newCount).toBeLessThanOrEqual(currentCount * 2) 
      if(newCount === currentCount){ 
       break; 
      } 
      currentCount = newCount; 
      count++; 
     } 

     expect(count).toBeGreaterThan(0); 
    }) 
}); 

function getList() { 
    return element(by.className(pageId + ' list')).all(by.tagName('ion-item')); 
} 
関連する問題