Selenium - 3.141.59
Java
При выполнении метода dragAndDrop исходный элемент перемещается не к целевому элементу, а к физическому курсору.
Попробовал следующее:
public static void dragAndDrop(WebDriver driver, WebElement src, WebElement target) {
Actions builder = new Actions(driver);
builder.moveToElement(target).build().perform();
Action dragAndDrop = builder.clickAndHold(src)
.moveToElement(target)
.release(target)
.build();
dragAndDrop.perform();
}
И следующее:
public static void dragAndDrop(WebDriver driver, WebElement src, WebElement target) {
Actions builder = new Actions(driver);
builder.dragAndDrop(src, target).build().perform();
}
Но эти решения не работают.
Только это решение работает Хорошо:
public static void dragAndDropRobot(WebDriver driver, WebElement src, WebElement target) throws InterruptedException {
Robot robot;
int xWindow = driver.manage().window().getPosition().x;
int yWindow = driver.manage().window().getPosition().y;
int xTarget = target.getLocation().x;
int yTarget = target.getLocation().y;
Actions act = new Actions(driver);
act.dragAndDrop(src, target).build().perform();
try {
robot = new Robot();
robot.mouseMove((xWindow + xTarget), (yWindow + yTarget));
Thread.sleep(2000);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
} catch (AWTException e) {
e.printStackTrace();
}
}
Есть ли какие-либорешение для решения этой проблемы, кроме робота?