Capybara drag and drop summary
最近的项目用到了drag and drop, 记载一些
originele = find(...) targetele = find(...)
- dragto originele.dragto targetele 最简单的一种了,把一个元素拽到另一个元素 缺点是,如果浏览器不能同时显示两个元素,那么有可能失败
- draganddropby page.driver.browser.action.draganddropby(originele.native,200,-800).perform 把一个元素按照像素位置拖动,后面两个像素的参数, 第一个是x,表示该元素横向拖动多少,如果200就是该元素向右拖动200,如果是负数就是向左拖动。 第二个是y,表示该元素纵向拖动多少,如果200就是该元素向下拖动200,如果是负数就是向上拖动。 所以现在这个表示把originele向左上拖动
- moveto 上面两个都不管用的时候,可以考虑直接移动鼠标来达到目的 page.driver.browser.mouse.down(originele.native) page.driver.browser.mouse.moveto(targetele.native, x, y) page.driver.browser.mouse.up 鼠标按下-拖动-抬起,其中的x,y和上面的意思一致
- javascript page.executescript %{ $.getScript("http://your.bucket.s3.amazonaws.com/jquery.simulate.drag-sortable.js", function() { $("#eleid").simulateDragSortable({ move: 100}); }); } 使用js来移动目标,没有用过,其中move的似乎是上下移动,同样正数向下,负数向上,暂不知道怎样左右移动
关于怎么解决页面太长导致无法准确拖拽的问题,没有找到什么好方法,不过可以考虑在拖拽之前将页面定位到target ele的位置 originele.native.sendkeys :page_up
comments powered by