Ruby 在拖放对象之前按shift | control键拖放对象

Ruby 在拖放对象之前按shift | control键拖放对象,ruby,testing,selenium,drag-and-drop,watir-webdriver,Ruby,Testing,Selenium,Drag And Drop,Watir Webdriver,我正在使用watir webdriver进行自动测试。 在拖放之前,我们需要通过按下shift | control键进行拖放测试 我需要意识到: 1.单击元素“a” 2.开始拖动 3.按shift键控制 4.继续拖动 5.下降到元素“b” 有人能帮我吗?拖放支持在路线图中:根据,元素类有2个拖放方法:和 的rdoc示例似乎就是您试图实现的: a = browser.div(:id => "draggable") b = browser.div(:id => "droppable")

我正在使用watir webdriver进行自动测试。
在拖放之前,我们需要通过按下shift | control键进行拖放测试

我需要意识到:
1.单击元素“a”
2.开始拖动
3.按shift键控制
4.继续拖动
5.下降到元素“b”


有人能帮我吗?

拖放支持在路线图中:

根据,元素类有2个拖放方法:和

的rdoc示例似乎就是您试图实现的:

a = browser.div(:id => "draggable")
b = browser.div(:id => "droppable")
a.drag_and_drop_on b

试试这个代码。我认为这对我们很有用。我很感激,如果你对我的答案满意,请投票支持我的答案。
    public class DragAndDropConcept {
    public static void main(String[] args) {

    WebDriver driver = new FirefoxDriver();
    driver.get("http://jqueryui.com/droppable/");

    driver.switchTo().frame(0);    

    Actions obj = new Actions(driver);

    obj.clickAndHold(driver.findElement(By.xpath("//*[@id='draggable']")))
    .moveToElement(driver.findElement(By.xpath("//*[@id='droppable']")))
    .release().build().perform();

    }
    }
require 'watir-webdriver'

module Selenium
  module WebDriver
    class ActionBuilder

      def hold(timeout)
        @devices.merge!(:self => self) unless @devices[:self]
        @actions << [:self, :sleep, timeout]
        self
      end

    end # ActionBuilder
  end # WebDriver
end # Selenium


begin
  browser = Watir::Browser.new
  browser.goto my_page
  a = browser.div(id: "a")
  b = browser.div(id: "b")
  browser.driver.action.click_and_hold(a.wd).move_to(b.wd).hold(3).key_down(:shift).key_up(:shift).release.perform
  #browser.driver.action.click_and_hold(a.wd).move_to(b.wd).hold(3).send_keys(:shift).release.perform

ensure
  browser.close
end
browser.driver.action.key_down(:shift).click_and_hold(a.wd).move_to(b.wd).key_up(:shift).release.perform