作为我的Selenium WebDriver测试的一部分,我需要拖动一些HTML
元素,将其移动到某个位置并在那里删除(释放)。
我尝试了以下代码:
1)使用Action
Action rotateText = builder.clickAndHold(textRotator)
.moveByOffset(xRotatorOffset, yRotatorOffset)
.release(textRotator)
.build();
rotateText.perform();
textRotator
是我试图拖动和移动的元素
对于此处显示的代码,元素将移动到所需位置,但在应用release
操作时立即返回到原始位置。
如果省略.release(textRotator)
部分 - 元素留在所需位置但未释放,则每次鼠标移动都会影响元素位置并将其带到绝对不需要的位置。
2)Robot
robot.mouseMove(textRotatorPoint); //The element I want to drag and move
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(xTextOffset,yTextOffset); // the new location I want to move the element to
robot.mouseRelease(InputEvent.BUTTON1_MASK);
在这种情况下,鼠标被扔到网页左上角附近的某个奇怪位置,在我正在使用区域的框架之外。
所需的元素不会移动到任何地方......
更新:与此同时,我通过添加.click()
找到了第一个代码的一些解决方法。现在它看起来
Action rotateText = builder.clickAndHold(textRotator)
.moveByOffset(xRotatorOffset, yRotatorOffset)
.click()
.release(textRotator)
.build();
rotateText.perform();
它有效。
现在我的问题是:这是Action
执行此操作的唯一方法,以及如何使用robot
执行此操作