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
您可以指定如何您将等待很长时间才能看到它。
如果元素之前是隐藏的,它可能在断言 运行 之前不可见,这会导致断言失败,即使元素实际上是可见的。
我想滚动页面直到所需元素出现为止。
我试过:
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
您可以指定如何您将等待很长时间才能看到它。
如果元素之前是隐藏的,它可能在断言 运行 之前不可见,这会导致断言失败,即使元素实际上是可见的。