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

Во-первых, не прокручивать страницу и второй не удается, потому что элемент не виден.

Как это исправить? Я хочу прокручивать, пока элемент не станет видимым.

ответ

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 вы можете указать, как долго вы будете ждать его видимости.

Если элемент ранее был скрыт, он может быть не видимым до того, как будет выполнено утверждение, что приведет к сбою утверждения, даже если элемент действительно виден.

Смежные вопросы