15

我想将一个元素拖放到另一个元素的位置,从 watir-webdriver 脚本中触发。

“拖放”是指拾取一个可拖动元素并将其释放到另一个元素上。“可能”是指可以从 watir-webdriver 脚本执行的任何拖放方法。这包括代码片段、第三方 gem 等。

据我了解,拖放是核心 watir-webdriver 的功能请求(在询问时),所以我(原则上)正在寻找替代方案。

更新拖放现在是核心 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
4

3 回答 3

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 上可以正常工作。

于 2011-08-20T06:51:06.730 回答
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

于 2012-04-16T16:20:50.333 回答
1

自己没用过,但是这里有一些关于使用拖拽的文档:https ://github.com/SeleniumHQ/selenium/wiki/Tips-And-Tricks

于 2011-07-06T10:57:53.930 回答