3

テストの実行中にセレンマウスを実際に見る方法はありますか? Windowsのカーソル画像、ある種のドット、十字線などを使用してください。

ドラッグ アンド ドロップ機能をWeb アプリseleniumと連携させようとしていますが、カーソルを見て実際に何をしているかを確認できると非常に便利です...javaHTML5

4

2 に答える 2

3

最終的に、これを機能させるには 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);
}
于 2013-09-09T08:51:16.590 に答える
1

Selenium の「dragAndDrop」および「dragAndDropToObject」コマンドを使用して、要素をドラッグ アンド ドロップできます。

「mouseDown」、「mouseMoveAt」、および「mouseUp」コマンドも非常に優れた代替手段です。

Selenium IDE での両方の方法の非常に良い例を次に示しますそのコードを Java に変換して使用できます。

于 2013-09-09T05:05:34.383 に答える