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

标签 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);
});

第一次不滚动页面,第二次失败,因为元素不可见。

如何解决这个问题?我想滚动直到元素出现可见。

最佳答案

如果你使用的是 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 您可以指定等待它可见的时间。

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

关于javascript - nightwatch.js - 滚动直到元素可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39372354/

相关文章:

javascript - 调用变量中指定的对象的 Javascript 成员函数

javascript - react 原生图表以流式传输实时数据?

javascript - 数据绑定(bind)不适用于 View 模型

javascript - 有人有将 NightWatch 与 TypeScript 一起使用的经验吗?

selenium - 在 watch 模式下运行 nightwatchjs

selenium - 在 nightwatch.js 中启用 localStorage/webStorage

javascript - 是否内置选择器选项以使用 nightwatchjs 做出复杂的决策?

javascript - Redux - 如何记录应用程序状态?

javascript - Angularjs 和 jquery 不能以我的常规简单形式工作

selenium - Nightwatch 一直报 502 bad gateway