nightwatch.js - 滚动直到元素可见

时间:2016-09-07 14:16:44

标签: javascript 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 个答案:

答案 0 :(得分: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您可以指定多长时间将等待它可见。

如果先前隐藏了该元素,则在运行断言之前可能看不到该元素,这导致断言失败,即使该元素实际上是可见的。