LoginSignup
4
1

More than 5 years have passed since last update.

CapybaraでPixelを指定してドラッグ&ドロップ

Last updated at Posted at 2018-09-17

CapybaraにはElementにdrag_toというメソッドがあり簡単にドラッグ&ドロップできるのですが、これはドロップ先のElementを指定し、その真ん中にドロップします。

もう少し細かい制御をしたかったのですが、そういうメソッドはないっぽいです(詳しく読んでませんがISSUEが立ってクローズされてるので実装しない方向で話がまとまってるようです)。

そこでSeleniumDriverのAPIに直接アクセスし実現してみました。

# sessionはCapybara::Session
driver = session.driver.browser

driver.action.drag_and_drop_by(
  # targetはCapybara::Node::Elementでドラッグするエレメント
  target.native,
  # toもCapybara::Node::Elementでドロップする対象
  to.native.location.x - target.native.location.x,
  to.native.location.y - target.native.location.y
).perform

Capybara::Session.driver.browserSelenium::WebDriver::[YouBrowser]::Driverに、Capybara::Node::Element.nativeSelenium::WebDriver::Elementにアクセス可能です。

drag_and_drop_byはオフセットを指定してドラッグ&ドロップします。SeleniumWebDriverのメソッドはSeleniumWebDriverのドキュメントでどうぞ。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1