15

watir-webdriverスクリプト内からトリガーされた、ある要素を別の要素の位置にドラッグアンドドロップしたいと思います。

「ドラッグアンドドロップ」とは、ドラッグ可能な要素を選択して、別の要素で解放することを意味します。「可能」とは、watir-webdriverスクリプトから実行できるドラッグ/ドロップの任意のメソッドを意味します。これには、コードスニペット、サードパーティの宝石などが含まれます。

私が理解しているように、ドラッグアンドドロップはコアwatir-webdriverの機能要求です(質問時)ので、私は(原則として)代替手段を探しています。

UPDATEのドラッグアンドドロップがコアwatir-webdriverの一部になりました(0.5.0の時点で、私は信じています)

UPDATE 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

自分では使用しませんでしたが、ドラッグアンドドロップの使用に関するドキュメントがここにあります:https ://github.com/SeleniumHQ/selenium/wiki/Tips-And-Tricks

于 2011-07-06T10:57:53.930 に答える
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 に答える