Method: Capybara::Node::Element#scroll_to

Defined in:
lib/capybara/node/element.rb

#scroll_to(position, offset: [0,0]) ⇒ Capybara::Node::Element #scroll_to(element, align: :top) ⇒ Capybara::Node::Element #scroll_to(x, y) ⇒ Capybara::Node::Element

Scroll the page or element.

Overloads:

  • #scroll_to(position, offset: [0,0]) ⇒ Capybara::Node::Element

    Scroll the page or element to its top, bottom or middle.

    Parameters:

    • position (:top, :bottom, :center, :current)
    • offset ([Integer, Integer]) (defaults to: [0,0])
  • #scroll_to(element, align: :top) ⇒ Capybara::Node::Element

    Scroll the page or current element until the given element is aligned at the top, bottom, or center of it.

    Parameters:

    • element (Capybara::Node::Element)

      The element to be scrolled into view

    • align (:top, :bottom, :center) (defaults to: :top)

      Where to align the element being scrolled into view with relation to the current page/element if possible

  • #scroll_to(x, y) ⇒ Capybara::Node::Element

    Parameters:

    • x (Integer)

      Horizontal scroll offset

    • y (Integer)

      Vertical scroll offset

Returns:



462
463
464
465
466
467
468
469
470
471
472
473
# File 'lib/capybara/node/element.rb', line 462

def scroll_to(pos_or_el_or_x, y = nil, align: :top, offset: nil)
  case pos_or_el_or_x
  when Symbol
    synchronize { base.scroll_to(nil, pos_or_el_or_x) } unless pos_or_el_or_x == :current
  when Capybara::Node::Element
    synchronize { base.scroll_to(pos_or_el_or_x.base, align) }
  else
    synchronize { base.scroll_to(nil, nil, [pos_or_el_or_x, y]) }
  end
  synchronize { base.scroll_by(*offset) } unless offset.nil?
  self
end