class Watir::Scroll
Public Class Methods
new(object)
click to toggle source
# File lib/watir/scroll.rb, line 9 def initialize(object) @object = object end
Public Instance Methods
by(left, top)
click to toggle source
Scrolls by offset. @param [Fixnum] left Horizontal offset @param [Fixnum] top Vertical offset
# File lib/watir/scroll.rb, line 17 def by(left, top) @object.browser.execute_script('window.scrollBy(arguments[0], arguments[1]);', Integer(left), Integer(top)) self end
to(param = :top)
click to toggle source
Scrolls to specified location. @param [Symbol] param
# File lib/watir/scroll.rb, line 26 def to(param = :top) args = @object.is_a?(Watir::Element) ? element_scroll(param) : browser_scroll(param) raise ArgumentError, "Don't know how to scroll #{@object} to: #{param}!" if args.nil? @object.browser.execute_script(*args) self end
Private Instance Methods
browser_scroll(param)
click to toggle source
# File lib/watir/scroll.rb, line 56 def browser_scroll(param) case param when :top, :start 'window.scrollTo(0, 0);' when :center 'window.scrollTo(window.outerWidth / 2, window.outerHeight / 2);' when :bottom, :end 'window.scrollTo(0, document.body.scrollHeight);' when Array ['window.scrollTo(arguments[0], arguments[1]);', Integer(param[0]), Integer(param[1])] end end
element_scroll(param)
click to toggle source
# File lib/watir/scroll.rb, line 36 def element_scroll(param) script = case param when :top, :start 'arguments[0].scrollIntoView();' when :center <<-JS var bodyRect = document.body.getBoundingClientRect(); var elementRect = arguments[0].getBoundingClientRect(); var left = (elementRect.left - bodyRect.left) - (window.innerWidth / 2); var top = (elementRect.top - bodyRect.top) - (window.innerHeight / 2); window.scrollTo(left, top); JS when :bottom, :end 'arguments[0].scrollIntoView(false);' else return nil end [script, @object] end