Возможно ли перетаскивание в 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