2016-09-07 2 views
1

원하는 요소가 표시 될 때까지 페이지를 스크롤하려고합니다.nightwatch.js - 요소가 표시 될 때까지 스크롤

이 나는 ​​시도했다 :

browser.execute(function() { 
     window.scrollBy(0, 10000000); 
    }, []); 

browser.getLocationInView("<selector>", function(result) { 
    this.assert.equal(typeof result, "object"); 
    this.assert.equal(result.status, 0); 
    this.assert.equal(result.value.x, 200); 
    this.assert.equal(result.value.y, 200); 
}); 

첫 페이지를 스크롤하지 않고 요소가 표시되지 않기 때문에 두 번째는 실패합니다.

해결 방법? 요소가 보일 때까지 스크롤하고 싶습니다. 당신이 jQuery를 사용하는 경우

답변

1

당신이 이런 식으로 작업을 수행 할 수 있습니다

browser.execute(function() { 
    $(window).scrollTop($('some-element').offset().top - ($(window).height()/2)); 
}, []); 

또는 사용하여 일반 자바 스크립트 : 또한

browser.execute(function() { 
    document.getElementById("some-id").scrollIntoView(); 
}, []); 

을, 어떤 경우에는 내가 주장 대신 Nightwatch's waitForElementVisible를 사용하는 것이 좋습니다 것 때문에 어설 션을 사용할 때 주어진 순간에 요소가 보이는지 확인하지만 waitForElementVisible을 사용하면이 요소가 보일 때까지 기다릴 시간을 지정할 수 있습니다.

요소가 이전에 숨겨져있는 경우 요소가 실제로 표시 되더라도 어설 션이 실패하게하는 어설 션이 실행되기 전에 표시되지 않을 수 있습니다.

관련 문제