Est-ce que le drag-and-drop est possible dans Watir-webdriver?
je voudrais glisser-déposer un élément dans la position d'un autre, déclenché depuis un script Watir-webdriver.
par "glisser-déposer", je veux dire ramasser un élément traînant et le relâcher sur un autre. Par "possible", j'entends toute méthode de drag/drop qui peut être exécutée à partir d'un script Watir-webdriver. Cela inclut les extraits de code, les gemmes de tiers,etc.
si je comprends bien, le drag-and-drop est une requête de fonctionnalité pour core watir-webdriver (au moment de demander), je cherche donc (en principe) une alternative.
UPDATE glisser-déposer est maintenant partie intégrante du cœur de watir-webdriver (0.5.0, je crois)
UPDATE 2 Pour ceux qui cherchent l'illumination, c'est maintenant possible (à partir de la version 0.5.0):
a = browser.div(:id => "draggable")
b = browser.div(:id => "droppable")
a.drag_and_drop_on b
et
a = browser.div(:id => "draggable")
a.drag_and_drop_by 100, -200
3 réponses
Je ne sais pas si vous avez trouvé la réponse pour cela maintenant, mais c'est comme ça que je le fais pour 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")
il échoue sans les retards, mais il fonctionne bien avec eux sur FF5.
Je ne l'ai pas utilisé moi-même, mais il y a de la documentation sur l'utilisation de drag and drop ici:http://code.google.com/p/selenium/wiki/TipsAndTricks
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