javascript - 如何使用 Nightwatch 滚动到元素?

标签 javascript selenium-webdriver nightwatch.js

我正在使用 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/

相关文章:

java - Webdriver - 使用java获取div值

javascript - .elements() 在 Nightwatch 中如何工作?

javascript - 如何在 nightwatch.js 报告中显示控制台中出现的所有输出

javascript - javascript setTimeout 执行时间需要多倍的时间可能是什么原因?

javascript - 在我的待办事项列表中,删除/删除任务功能不起作用。有什么想法为什么?

javascript - Object.hasOwnProperty() 产生 ESLint 'no-prototype-builtins' 错误 : how to fix?

javascript - 显示明天的日期

python-3.x - 如何在 Selenium python 中找到页面的特定元素,因为我找不到它们

java - 查找 Selenium WebDriver 中分页按钮的数量

docker - Docker中的Nightwatch- Selenium 服务器找不到chromedriver