Nightwatch.js:拖放

时间:2016-05-13 15:26:34

标签: selenium drag-and-drop nightwatch.js

我正在尝试使用Nightwatch.js 0.8.18,Selenium Server 2.53.0和Chrome Driver 2.21.2测试拖放操作。

基本上,我采用https://github.com/RobK/nightwatchjs-drag-n-drop-example/blob/master/spec/drag-and-drop.js所描述的方法 - 即:......类似......

.moveToElement('some-xpath-expression', 10, 10)
.pause(100)
.mouseButtonDown(0)
.pause(100)
.moveToElement('other-xpath-expression', 30, 30)
.pause(100)
.mouseButtonUp(0)

光标移动到要拖动的元素(可以通过鼠标所在的图标的:hover样式感知),但是没有任何反应。在我看来,mouseButtonDown()动作没有效果。 (但谁知道肯定?)

如果我使用Firefox而不是Chrome,则没有任何区别 - 行为完全相同。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

当您点击元素时,表达式会发生变化,因此测试会忘记'他们应该点击什么。

建议使用动作构建方法:

http://elementalselenium.com/tips/39-drag-and-drop

答案 1 :(得分:1)

你必须尝试这个,它在Chrome,Firefox和IE中运行良好。

只需要使用npm安装“html-dnd”,这是一个链接:https://www.npmjs.com/package/html-dnd

安装完成后,您只需执行此命令

即可

browser.execute(dragAndDrop, ['#draggable', '#droppable']);

例如:

var dragAndDrop = require('html-dnd').codeForSelectors;
browser.execute(dragAndDrop,['#elemendId1','#elemendId2']).pause(2000);

希望这适用于您的测试用例。

答案 2 :(得分:0)

目前在 Nightwatch 版本 1.5.1 中,我可以使用以下示例进行拖放操作。

示例:

"Step 1: Drag and Drop": function (browser) {
    browser.moveToElement('yourLocator', '#startingElement', 0, 0);
    browser.mouseButtonDown(0);
    browser.moveToElement('yourLocator', '#endingElement', 0, 0);
    browser.mouseButtonUp(0);
}