テストの実行中にセレンマウスを実際に見る方法はありますか? Windowsのカーソル画像、ある種のドット、十字線などを使用してください。
ドラッグ アンド ドロップ機能をWeb アプリselenium
と連携させようとしていますが、カーソルを見て実際に何をしているかを確認できると非常に便利です...java
HTML5
最終的に、これを機能させるには Java ロボットを使用する必要がありました。マウスを表示するだけでなく、ドラッグ アンド ドロップを登録するには 2 つの動きが必要なため、HTML5 Web アプリの場合、ドラッグ アンド ドロップが Selenium で壊れているためです。Selenium は 1 つだけを行います。
私のメソッドは、各オブジェクトの中心からドラッグし、ドラッグ先の要素を越えてドラッグしたい場合はオフセットを可能にします。
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 に変換して使用できます。