有没有办法在运行测试时实际看到硒鼠标?可以使用 Windows 光标图像或某种点或十字线或任何东西!
我正在尝试让拖放功能在网络应用程序中使用,selenium
并且能够看到光标以查看它实际在做什么将非常有用......java
HTML5
最后,我不得不使用 Java 机器人来完成这项工作。不仅要看到鼠标,还因为 HTML5 Web App 的拖放在 selenium 中被破坏,因为拖放需要两个动作才能注册。Selenium 只做一个。
我的方法从每个对象的中心拖动,如果您想拖过要拖动到的元素,则允许偏移。
public void dragAndDropElement(WebElement dragFrom, WebElement dragTo, int xOffset) throws Exception {
//Setup robot
Robot robot = new Robot();
robot.setAutoDelay(50);
//Fullscreen page so selenium coordinates are same as robot coordinates
robot.keyPress(KeyEvent.VK_F11);
Thread.sleep(2000);
//Get size of elements
Dimension fromSize = dragFrom.getSize();
Dimension toSize = dragTo.getSize();
//Get centre distance
int xCentreFrom = fromSize.width / 2;
int yCentreFrom = fromSize.height / 2;
int xCentreTo = toSize.width / 2;
int yCentreTo = toSize.height / 2;
//Get x and y of WebElement to drag to
Point toLocation = dragTo.getLocation();
Point fromLocation = dragFrom.getLocation();
//Make Mouse coordinate centre of element and account for offset
toLocation.x += xOffset + xCentreTo;
toLocation.y += yCentreTo;
fromLocation.x += xCentreFrom;
fromLocation.y += yCentreFrom;
//Move mouse to drag from location
robot.mouseMove(fromLocation.x, fromLocation.y);
//Click and drag
robot.mousePress(InputEvent.BUTTON1_MASK);
//Drag events require more than one movement to register
//Just appearing at destination doesn't work so move halfway first
robot.mouseMove(((toLocation.x - fromLocation.x) / 2) + fromLocation.x, ((toLocation.y - fromLocation.y) / 2) + fromLocation.y);
//Move to final position
robot.mouseMove(toLocation.x, toLocation.y);
//Drop
robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
您可以使用 Selenium 的“dragAndDrop”和“dragAndDropToObject”命令来拖放元素。
“mouseDown”、“mouseMoveAt”和“mouseUp”命令也是很好的替代品。
这是selenium IDE 中两种方式的非常好的示例。您可以将该代码转换为 java 以供使用。