Возможно ли перетаскивание в watir-webdriver?

Я хотел бы перетащить один элемент в позицию другого, вызванного изнутри watir-webdriver script.

Под "перетаскиванием" я имею в виду поднять перетаскиваемый элемент и освободить его на другом. Под "возможным" я подразумеваю любой метод перетаскивания, который может быть выполнен из wavir-webdriver script. Это включает фрагменты кода, драгоценные камни третьих лиц и т.д.

Как я понимаю, drag-and-drop - это запрос функции для основного watir-webdriver (во время запроса), поэтому я ищу (в принципе) альтернативу.

UPDATE drag-and-drop теперь является частью основного watir-webdriver (по состоянию на 0.5.0, я считаю)

ОБНОВЛЕНИЕ 2 Для тех, кто ищет просветление, теперь это возможно (начиная с версии 0.5.0):

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

a.drag_and_drop_on b

и

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

a.drag_and_drop_by 100, -200

Ответы

Ответ 1

Я не знаю, нашли ли вы ответ для этого, но так я делаю это для 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")

Он терпит неудачу без задержек, но отлично работает с ними на FF5.

Ответ 2

Не использовал его сам, но есть некоторые документы об использовании Использование перетаскивания здесь: http://code.google.com/p/selenium/wiki/TipsAndTricks

Ответ 3

require 'rubygems'
require 'watir-webdriver'

module Watir
  class Element
    def drag_and_drop_on(other)
      assert_exists
      driver.action.drag_and_drop(@element, other.wd).perform
    end
  end
end

profile = Selenium::WebDriver::Firefox::Profile.new
profile.native_events = true

b = Watir::Browser.new :firefox, :profile => profile
b.goto "http://jqueryui.com/demos/droppable/default.html"

b.element(:id => "draggable").drag_and_drop_on(b.element(:id => "droppable"))

h3manth.com