我想将一个元素拖放到另一个元素的位置,从watir-webdriver脚本中触发。
通过“拖放”我的意思是拿起一个可拖动的元素并将其释放到另一个元素上。 “可能”是指可以从watir-webdriver脚本执行的任何拖放方法。这包括代码片段,第三方宝石等。
据我所知,拖放是核心watir-webdriver的功能请求(在询问时),所以我(原则上)寻找替代方案。
UPDATE 拖放现在是核心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
答案 0 :(得分:9)
我不知道你现在是否找到了答案,但这就是我为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上它们可以正常工作。
答案 1 :(得分:1)
我自己没有使用它,但有一些关于使用拖放的文档:https://github.com/SeleniumHQ/selenium/wiki/Tips-And-Tricks
答案 2 :(得分:1)
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