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

nightwatch.js - scroll until element is visible

我想滚动页面直到所需元素出现为止。

我试过:

    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,您可以这样做:

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 您可以指定如何您将等待很长时间才能看到它。

如果元素之前是隐藏的,它可能在断言 运行 之前不可见,这会导致断言失败,即使元素实际上是可见的。