Selenium Webdriver Java - 在执行拖放操作时寻找Actions和Robot的替代品

时间:2014-08-22 03:14:44

标签: java selenium-webdriver

我首先尝试使用Actions类,拖放功能可以在不同的元素上运行,但是无法在其上确定特定的可拖动元素的确切屏幕/网页位置。

以下是我使用过的代码:

    Point loc = driver.findElement(By.id("thiselement")).getLocation();
    System.out.println(loc);
    WebElement drag = driver.findElement(By.id("thiselement"));
    Actions test = new Actions(driver);
    test.dragAndDropBy(drag, 0, 60).build().perform();

我用它的像素位置检查了元素,然后打印(837,-52),它位于网页顶部的某个位置,与实际元素的距离不同。

然后我尝试使用Robot类并且在我的脚本上运行得非常好,但是只能在单个测试机器上提供持续的成功运行,使用具有不同屏幕分辨率和屏幕大小的不同机器运行它将使脚本失败由于Robot对元素像素位置的依赖性。

我使用的机器人脚本的示例代码:

机器人dragAndDrop = new Robot();

  dragAndDrop.mouseMove(945, 166); //actual pixel location of the draggable element
  dragAndDrop.mousePress(InputEvent.BUTTON1_MASK);
        sleep(3000);
  dragAndDrop.mouseMove(945, 226);
  dragAndDrop.mouseRelease(InputEvent.BUTTON1_MASK);
        sleep(3000);

动作和机器人有什么替代方法可以自动拖放吗?或者也许有助于使用脚本来处理动作,因为我真的无法使用Robot。

提前致谢。

1 个答案:

答案 0 :(得分:0)

拖放的另一种选择,

Actions test= new Actions(driver);

builder.clickAndHold("thisElement").moveToElement("targetElement")

.release("targetElement")

.build().perform();

此SO帖子将帮助您更好地here