使用Selenium Webdriver for Ruby进行HTML5拖放

是否有任何解决方案可以使用Selenium Webdriver与Ruby一起使用HTML5 Drag and Drop? 我使用Selenium-Webdriver 2.20.0和Ruby 1.9.2

这是一个简单的测试来重现问题:

require "selenium-webdriver"
require "test/unit"

class Html5DragAndDropTest < Test::Unit::TestCase

  def setup
    @driver = Selenium::WebDriver.for :firefox
    @driver.manage.timeouts.implicit_wait = 30
  end

  def teardown
    @driver.quit
  end

  def test_html5_drag_and_drop
    @driver.get("http://html5demos.com/drag")
    target = @driver.find_element(:id, "one")
    source = @driver.find_element(:id, "bin")
    @driver.action.drag_and_drop(target, source).perform
    assert target.displayed? == false
  end
end

这仍然是Selenium中的一个错误,所以上面提到的JavaScript解决方法是一个很好的解决方案。

我构建了一个示例HTML拖放页面,并使用Ryan提供的drag_and_drop_helper.js的要求编写了一个测试来执行它。 你可以在这里看到我的全文。

干杯,
戴夫H
@TourDeDave


这里有一个临时的解决方法,可以帮助社区进行测试。

1)drag_and_drop_helper.js(https://gist.github.com/2362544)到你的test / helpers目录

2)在test_helper.rb中创建一个新方法

 def drag_and_drop(source,target)

   js_filepath=File.dirname(__FILE__)+"/drag_and_drop_helper.js"
   js_file= File.new(js_filepath,"r")
   java_script=""

  while (line=js_file.gets)
    java_script+=line
   end

   js_file.close

   @driver.execute_script(java_script+"$('#{source}').simulateDragDrop({ dropTarget: '#{target}'});")

   rescue Exception => e
     puts "ERROR :" + e.to_s

end

以下是如何获得拖放(dnd)与Capybara / Selenium进行黄瓜测试的工作。 基本上使用drag_to方法直接从Capybara调用dnd不起作用。 你必须退出水豚到Selenium中,并且当使用Selenium时,使用click_and_hold方法,然后拖动和放下,然后释放dnd来工作。 代码如下:

#jump out of capybara for dnd

#selenium web driver accessed directly using page.driver.browser
source_selenium_ele = page.driver.browser.find_element(:xpath, "//draggable-element")
target_selenium_ele = page.driver.browser.find_element(:xpath, "//destination-element")

#drag and drop actions
page.driver.browser.action.click_and_hold(source_selenium_ele).perform
page.driver.browser.action.drag_and_drop(source_selenium_ele, target_selenium_ele).perform
page.driver.browser.action.release.perform

#jump back into capybara...
链接地址: http://www.djcxy.com/p/58411.html

上一篇: HTML5 Drag and Drop using Selenium Webdriver for Ruby

下一篇: OpenGl render direcly to bitmap (without any view)