优点:无需获得Element,只需要两个坐标就可以进行操作
缺点:独占性强,强制获得鼠标,运行过程中无法进行其他操作,坐标是屏幕坐标,计算坐标需要减去浏览器工具栏和地址栏的高度
import org.openqa.selenium.*; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.firefox.FirefoxProfile; import org.openqa.selenium.interactions.Actions; import java.awt.Robot; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.io.*; public class DragAndDrop { static WebDriver driver; public static void main(String[] args) throws Exception { System.setProperty("webdriver.chrome.driver", "F:\\workspace\\chromedriver_win32\\chromedriver.exe"); driver = new ChromeDriver(); // driver.get("http://www.w3schools.com/html/html5_draganddrop.asp"); // driver.get("http://www.w3schools.com/html/tryhtml5_draganddrop.htm"); driver.get("http://html5demos.com/drag"); driver.manage().window().maximize(); WebElement dragFrom = driver.findElement(By.xpath("//*[@id='one']")); WebElement dragTo = driver.findElement(By.xpath("//*[@id='bin']")); dragAndDropElement(dragFrom, dragTo); } public static void dragAndDropElement(WebElement dragFrom, WebElement dragTo) throws Exception { // Setup robot Robot robot = new Robot(); robot.setAutoDelay(500); // Get size of elements Dimension fromSize = dragFrom.getSize(); Dimension toSize = dragTo.getSize(); Point toLocation = dragTo.getLocation(); Point fromLocation = dragFrom.getLocation(); //Make Mouse coordinate centre of element toLocation.x += toSize.width/2; toLocation.y += toSize.height/2 + 50 ; fromLocation.x += fromSize.width/2; fromLocation.y += fromSize.height/2 + 50; //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); } }
相关推荐
Java中的Drag and Drop拖拽技术
jquery实现Drag and Drop,图片拖拽实例
wpf,实现了鼠标拖放操作,可以像win7桌面的图标一样拖放
Ole Drag and Drop Example.
C#实现和windows资源管理器之间相互拖拽文件,并显示文件图标的列子。可以访问blog:http://blog.csdn.net/cc_net查看有关Drag和Drop的文章
drag and drop 拖放库 vue dnd mobile
Drag and Drop Component Suite Version 5.2 Full Source
java swing控件的drag和drop的实现方法: 主要用到java.awt.dnd.*;里面的方法,可以实现任意2个component的drag and drop.
DragAndDrop_Demo源码,是一个很不错的C++源码,有兴趣的伙伴们抽时间可以看一下把。
DragAndDrop_src源码,是一个很不错的C++源码,有兴趣的伙伴们抽时间可以看一下把。
表格拖拽排序插件 Table Drag and Drop JQuery plugin v0.7 最新0.7版本
Qt之QToolButton与QGroupBox实现动态拖拽Drag、Drop功能,可以随意拖放到QGroupBox内,也可以与现有的QToolButton交换位置,也可以拖拽出QGroupBox外释放
看了书上写了这个系统提供的拖拽操作(StartDrag),然后自己尝试多次未能成功,然后又在百度找了很多文章,发现都不尽相同,之后自己总结之后写出了这个demo,希望能够帮到和我之前遇到同样问题的朋友
最近写项目的时候,要用到一个拖拽效果,但是,所以写了一个例子上传到这里,交流学习
iOS11 Drag and Drop功能的简单演示 github: https://github.com/xiaopin/iOS11-Drag-and-Drop.git
一套简化拖放操作的组件包,虽然很老了,不过也支持D7。
实现datagrid and treeviewer的drag drop, 只可单向drag
Drag and Drop Component Suite Full Source
一篇关于文件拖放扩展的宝贵资料,介绍了IE中文件拖放的整个过程
Sliverlight 微软Drag and drop 实例,希望能够给大家有所帮助