2017-11-30 6 views
1

당신이 여기 가면 E2E 테스트 자스민/각도기에서 시뮬레이션 유형 : $0.scrollIntoView()이온 3 무한 스크롤

무한 스크롤이 실행되지 않습니다.

각도기 컨텍스트에서 프로그래밍 방식으로 무한 스크롤을 트리거하는 방법이 있습니까?

답변

3

예에서 스크롤의 구현은 scrollIntoView이 호출 될 때 예상되는 범위에서 멀리 떨어진 것으로 추측되는 스크롤의 속도/속도에 의존합니다.

한 가지 해결 방법은 적당한 시간에 여러 스크롤 이벤트를 방출하여 부드러운 스크롤을 시뮬레이트하는 것입니다. 아이디어는 가능한 한 실제 사용자의 행동을 재생산하는 것입니다. 내 경우에는, 내가 인수로 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')); 
}