将鼠标悬停在nightwatchjs中的链接上

时间:2015-06-05 18:21:38

标签: jquery node.js selenium functional-testing nightwatch.js

我一直在使用nightwatch.js并且总是点击元素。有没有办法将鼠标悬停在链接或按钮上?

3 个答案:

答案 0 :(得分:22)

尝试browser.moveToElement命令。

您也可以在moveToElement完成后触发回调:

browser.waitForElementVisible('.recommendation', 1000, function () {
// moveToElement can also accept offsets
browser.moveToElement('.recommendation', 100, 100, function() {
    browser.waitForElementVisible('.share', 500, function () {
        browser.click('.share');
    }, "Click share icon. ");
});
}, "Find a recommendation ");

上面的代码移动到一个元素。在moveTo完成之后,它等待直到仅存在悬停元素。之后它会与之互动。

doc:http://nightwatchjs.org/api/moveToElement.html

答案 1 :(得分:2)

您可以使用selenium API moveTo命令。它会将鼠标移动到给定元素,它应该保持在该元素上,直到使用涉及鼠标的下一个命令。

browser.moveTo(selector, xoffset, yoffset, function(){
    browser.pause(2000)
})

暂停您希望悬停的时间。以下是moveTo的api文档。

答案 2 :(得分:0)

您可以这样编写代码:

browser.pause(1000, () => {
  //first it will find the x and y of the given selector
  browser.getLocation(selector, (res) => {
    //then it will move to this selector and hover it
    browser.moveToElement(selector, res.value.x, res.value.y, (res) => {
      //callback function
    });
  });
})

请注意,如果您之前使用过waitForElementVisible,则可以更改选择器参数,并且moveToElement函数将不起作用(它将返回未定义的错误)