我正在尝试使用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,则没有任何区别 - 行为完全相同。
有什么想法吗?
答案 0 :(得分:1)
当您点击元素时,表达式会发生变化,因此测试会忘记'他们应该点击什么。
建议使用动作构建方法:
答案 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);
}