我正在使用 nightwatch 对我的应用程序进行电子测试。其中一项测试失败,因为它无法滚动到我怀疑它正在测试的元素。问题是我需要滚动还是有其他方法可以做到这一点?这是我正在测试的元素:
return this.waitForElementVisible('#myElement', 4000) //wait for it to be visible
.assert.visible('#myElement')
.click('#myElement')
该元素位于页面顶部,但测试运行器向下滚动了一点页面,并且在屏幕截图中不可见。 如果需要我怎样才能滚动到这个元素?或者:我如何测试这个元素?
最佳答案
nightwatch 中有一个本地方法可以让元素进入 View 。 (一般情况下,元素应该始终从 nightwatch/selenium 滚动到 View 中。但是如果你想手动执行此操作,你可以使用 getLocationInView() :
return this.getLocationInView('#myElement')
.assert.visible('#myElement')
.click('#myElement')
Nightwatch 还支持使用 moveTo() 通过 Webdriver 协议(protocol)直接执行此操作没有任何抽象。在那种情况下,它看起来更像是:
const self = this;
return this.api.element('#myElement', (res) => {
self.api.moveTo(res.value.ELEMENT, 0, 0, () => {
self.assert.visible('#myElement');
self.click('#myElement');
})
});
(这只是我从头到尾写的,希望我没有写错)
但是对您的情况有帮助的是改变配置中的 seleniums 元素滚动行为,例如:
firefox: {
desiredCapabilities: {
browserName: 'firefox',
javascriptEnabled: true,
acceptSslCerts: true,
elementScrollBehavior: 1
}
}
默认为 0 -> 元素滚动到页面顶部
elementScrollBavior 1 -> 元素滚动到页面底部
关于javascript - 如何使用 Nightwatch 滚动到元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43059368/