网址 - http://www.seleniumeasy.com/test/drag-and-drop-demo.html
System.setProperty("webdriver.chrome.driver", "D:\\Eclipse\\Files\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.manage().window().fullscreen();
driver.get("http://www.seleniumeasy.com/test/drag-and-drop-demo.html");
Thread.sleep(5000);
WebElement itemToBeDragged = driver.findElement(By.xpath("//div[@id='todrag']//span[3]"));
WebElement whereToBeDragged = driver.findElement(By.xpath("//div[@id='mydropzone']"));
Thread.sleep(3000);
Actions builder = new Actions(driver);
builder.clickAndHold(itemToBeDragged).moveToElement(whereToBeDragged).build();
Thread.sleep(3000);
builder.dragAndDrop(itemToBeDragged, whereToBeDragged).perform();
我已经尝试过我的解决方案,但没有一个对我有用。
例如:-
最佳答案
尝试了大部分关于 SO 的建议,最后想出了这个,我很惊讶,因为拖放可以通过很多方式实现,但它们似乎都没有在这个特定的链接上工作,下面的代码似乎工作正常(尝试了所有 4 个可拖动对象)
在这里使用机器人类(class)
driver.get("https://www.seleniumeasy.com/test/drag-and-drop-demo.html");
driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);
Point coordinates = driver.findElement(By.xpath("//div[@id='todrag']//span[3]")).getLocation();
Point coordinatesa = driver.findElement(By.xpath("//*[@id='mydropzone']")).getLocation();
Robot robot = new Robot();
robot.mouseMove(coordinates.getX(), coordinates.getY() + 120);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseMove(coordinatesa.getX() + 100, coordinatesa.getY() + 130);
Thread.sleep(500);
robot.mouseMove(coordinatesa.getX() + 80, coordinatesa.getY() + 130);
robot.delay(2000);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
关于java - 使用 Action 可以选择元素但不能将元素拖到特定位置,因为放置功能是在悬停时创建的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61316093/