Search code examples
watirautomated-testsweb-testingwatir-webdriver

Is drag-and-drop possible in watir-webdriver?


I would like to drag-and-drop one element to the position of another, triggered from within a watir-webdriver script.

By "drag-and-drop" I mean picking up a draggable element and releasing it on another. By "possible" I mean any method for drag/drop that can be executed from a watir-webdriver script. This includes code snippets, third party gems, etc.

As I understand it drag-and-drop is a feature request for core watir-webdriver (at time of asking), so I'm looking (in principle) for an alternative.

UPDATE drag-and-drop is now part of core watir-webdriver (as of 0.5.0, I believe)

UPDATE 2 For those seeking enlightenment, this is now possible (as of version 0.5.0):

a = browser.div(:id => "draggable")
b = browser.div(:id => "droppable")

a.drag_and_drop_on b

and

a = browser.div(:id => "draggable")

a.drag_and_drop_by 100, -200

Solution

  • I don't know if you found the answer for this by now, but this is how I do it for Firefox:

    my_element.fire_event("onmousedown")
    driver=browser.driver
    driver.action.click_and_hold(my_element.wd).perform
    
    sleep 2
    driver.action.move_to(target.wd).perform
    
    sleep 2
    my_element.fire_event("onmouseup")
    

    It fails without the delays, but it works fine with them on FF5.