Class: Watir::WhenDOMChangedDecorator

Inherits:
Object
  • Object
show all
Defined in:
lib/watir/dom/wait.rb

Overview

Wraps an Element so that any subsequent method calls are put on hold until the DOM subtree is modified within the element.

Instance Method Summary collapse

Constructor Details

#initialize(element, opts, message = nil) ⇒ WhenDOMChangedDecorator

Returns a new instance of WhenDOMChangedDecorator.



43
44
45
46
47
48
# File 'lib/watir/dom/wait.rb', line 43

def initialize(element, opts, message = nil)
  @element = element
  @opts    = opts
  @message = message
  @js      = Dom::Wait::JAVASCRIPT.dup
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/watir/dom/wait.rb', line 50

def method_missing(m, *args, &block)
  unless @element.respond_to?(m)
    raise NoMethodError, "undefined method `#{m}' for #{@element.inspect}:#{@element.class}"
  end

  @element.browser.execute_script @js, @element, @opts[:interval], @opts[:delay]
  Watir::Wait.until(@opts[:timeout], @message) { @element.browser.execute_script(Dom::Wait::DOM_READY) == 0 }

  @element.__send__(m, *args, &block)
end

Instance Method Details

#respond_to?(*args) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/watir/dom/wait.rb', line 61

def respond_to?(*args)
  @element.respond_to?(*args)
end