2016-09-07 16 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); 
}); 

を最初にページをスクロールしていないと要素が表示されていないため、2番目は失敗します。

これを修正するにはどうすればよいですか?要素が表示されるまでスクロールしたい

答えて

1

あなたはjQueryのを使用しているあなたは、このようにそれを行うことができる場合:

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

またはプレーンJavaScriptを使用して:また

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

、いくつかのケースでは、私はのでNightwatch's waitForElementVisibleの代わりに、アサーションを使用することをお勧めしますアサーションを使用するときは、特定の瞬間に要素が表示されているかどうかをチェックするだけですが、waitForElementVisibleを使用すると、その要素が表示されるのを待つ時間を指定できます。

要素が以前隠されていた場合、アサーションが実行される前に表示されない可能性があり、要素が実際に表示されてもアサーションが失敗する可能性があります。

関連する問題