使用夜视仪和硒,在系统测试期间,我正在尝试拖放,这是使用Knockout-draggable完成的。手动使用时,它可以100%工作。这是系统测试的代码,它应该拖放一个可拖动的框:
this.moveToElement('@box', 0, 0);
c.mouseButtonDown(0);
this.moveToElement('@box2', 0, 40);
c.mouseButtonUp(0);
this
是页面(xpath元素所在的页面),c
是客户端。
但是这似乎甚至无法在第二个盒子(大约40像素高)下移动盒子。是的,我尝试了不同的数字,甚至没有把盒子拖到任何地方。在Firefox中完成。
是的,@box
和@box2
都在使用xpath。我一直在使用它们进行一系列其他测试。
答案 0 :(得分:1)
如何在c.mouseButtonDown(0);
和之间暂停一下
this.moveToElement('@box2', 0, 40);
答案 1 :(得分:1)
我采用了@Hikaryu的方法,对我有用:
exports.dragAndDrop = function (browser, LocatorFrom, LocatorTo) {
browser
.moveToElement(LocatorFrom, 10, 10)
.mouseButtonDown(0)
.pause(2000)
.moveToElement(LocatorTo, 10, 10)
.pause(2000)
.mouseButtonUp(0);
return browser;
};
答案 2 :(得分:0)
我为这个问题做了一个customCommand。它没有问题地工作
module.exports.command = function (LocatorFrom, LocatorTo, callback) {
var self = this;
this
.getLocation(LocatorTo, function (result) {
let xto = result.value.x;
let yto = result.value.y;
this.moveToElement(LocatorFrom, 10, 10)
.mouseButtonDown(0)
.pause(2000)
.moveToElement(LocatorTo, xto, yto)
.pause(2000)
.mouseButtonUp(0);
return this;
});
return this;
};
答案 3 :(得分:0)
你必须尝试这个,它在Chrome,Firefox和IE中运行良好。但这仅适用于要移动的元素和要移动的元素都支持HTML5拖放功能。
只需要安装" html-dnd"使用npm,以及这是一个链接 -
https://www.npmjs.com/package/html-dnd
安装完成后,您只需执行此命令:
browser.execute(dragAndDrop, ['#draggable', '#droppable']);
例如:
browser.execute(dragAndDrop,['#elemendId1', '#elemendId2']).pause(2000);
希望这适用于您的测试用例。