我正在MAC OS系统上执行我的量角器代码并使用Chrome。一切正常,但不能拖放事件。
如果我将实际鼠标位置放在掉落目标上,代码工作正常。但是,如果实际鼠标位置不在目标位置,则不会执行该操作。 我使用的代码是:
browser.actions().dragAndDrop(source,target).perform();
我也试过这个:
browser.actions().mouseDown(source).mouseMove(target).mouseUp().perform();
使用 html-dnd NPM 模块。
链接:https://www.npmjs.com/package/html-dnd
代码片段:
var dragAndDrop = require('html-dnd').code;
var draggable = driver.findElement(By.id('draggable'));
var droppable = driver.findElement(By.id('droppable'));
driver.executeScript(dragAndDrop, draggable, droppable);
为此:
browser.actions().dragAndDrop(source,target).perform();
试试这个:
browser.actions().mouseMove(source).mouseDown().mouseMove(target).mouseUp().perform();
请注意,dragAndDrop
只不过是mouseMove + mouseDown + mouseMove + mouseUp
您很可能在一长串人中,他们对使用html5
实现的拖放功能有问题。这一直是使用Selenium网络驱动程序解决的问题领域。
请注意,该问题可能是由于为ChromeDriver提交的一个古老的错误造成的。
该错误有很多讨论,可能有助于理解真正的问题,并且在下面的评论中也提到了很多解决方案 - 但是这个问题还没有万无一失或 100% 有效的解决方案。
这个错误已经在量角器github问题中多次提到,比如这里,这里,这里,这里和这里,以及Selenium GitHub的存档问题。
您可以尝试的解决方案之一是此处创建的此帮助程序方法。但是,这不是一个有保证的解决方案,但我建议您尝试一下。这里提到的量角器原始问题还有许多其他解决方案,您可以尝试。您也可以尝试此帮助程序方法。
另外,请注意,相同的问题已在此处,此处,此处,此处多次发布。