Class: AePageObjects::ElementProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/ae_page_objects/element_proxy.rb

Instance Method Summary collapse

Constructor Details

#initialize(element_class, *args) ⇒ ElementProxy

Returns a new instance of ElementProxy.



12
13
14
15
16
17
# File 'lib/ae_page_objects/element_proxy.rb', line 12

def initialize(element_class, *args)
  @element_class = element_class
  @args          = args

  @loaded_element = nil
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

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



119
120
121
122
123
124
125
# File 'lib/ae_page_objects/element_proxy.rb', line 119

def method_missing(name, *args, &block)
  if name == "class"
    return @element_class
  end

  implicit_element.__send__(name, *args, &block)
end

Instance Method Details

#absent?Boolean

Returns:

  • (Boolean)


44
45
46
47
48
49
# File 'lib/ae_page_objects/element_proxy.rb', line 44

def absent?
  wait_until_absent
  true
rescue ElementNotAbsent
  false
end

#hidden?Boolean

Returns:

  • (Boolean)


26
27
28
29
30
31
# File 'lib/ae_page_objects/element_proxy.rb', line 26

def hidden?
  wait_until_hidden
  true
rescue ElementNotHidden
  false
end

#is_a?(type) ⇒ Boolean

Returns:

  • (Boolean)


111
112
113
# File 'lib/ae_page_objects/element_proxy.rb', line 111

def is_a?(type)
  type == @element_class || type == ElementProxy
end

#kind_of?(type) ⇒ Boolean

Returns:

  • (Boolean)


115
116
117
# File 'lib/ae_page_objects/element_proxy.rb', line 115

def kind_of?(type)
  is_a?(type)
end

#not_present?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/ae_page_objects/element_proxy.rb', line 51

def not_present?
  absent?
end

#not_visible?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/ae_page_objects/element_proxy.rb', line 33

def not_visible?
  hidden?
end

#presenceObject



55
56
57
58
59
# File 'lib/ae_page_objects/element_proxy.rb', line 55

def presence
  implicit_element
rescue LoadingElementFailed
  nil
end

#present?Boolean

Returns:

  • (Boolean)


37
38
39
40
41
42
# File 'lib/ae_page_objects/element_proxy.rb', line 37

def present?
  wait_until_present
  true
rescue ElementNotPresent
  false
end

#respond_to?(*args) ⇒ Boolean

Returns:

  • (Boolean)


127
128
129
# File 'lib/ae_page_objects/element_proxy.rb', line 127

def respond_to?(*args)
  super || @element_class.allocate.respond_to?(*args)
end

#visible?Boolean

Returns:

  • (Boolean)


19
20
21
22
23
24
# File 'lib/ae_page_objects/element_proxy.rb', line 19

def visible?
  wait_until_visible
  true
rescue ElementNotVisible
  false
end

#wait_for_absence(timeout = nil) ⇒ Object



107
108
109
# File 'lib/ae_page_objects/element_proxy.rb', line 107

def wait_for_absence(timeout = nil)
  wait_until_absent(timeout)
end

#wait_for_presence(timeout = nil) ⇒ Object



93
94
95
# File 'lib/ae_page_objects/element_proxy.rb', line 93

def wait_for_presence(timeout = nil)
  wait_until_present(timeout)
end

#wait_until_absent(timeout = nil) ⇒ Object



97
98
99
100
101
102
103
104
105
# File 'lib/ae_page_objects/element_proxy.rb', line 97

def wait_until_absent(timeout = nil)
  is_absent = Waiter.wait_until(timeout) do
    check_absence
  end

  unless is_absent
    raise ElementNotAbsent, "element_class: #{@element_class}, options: #{@options.inspect}"
  end
end

#wait_until_hidden(timeout = nil) ⇒ Object



72
73
74
75
76
77
78
79
80
81
# File 'lib/ae_page_objects/element_proxy.rb', line 72

def wait_until_hidden(timeout = nil)
  is_hidden = Waiter.wait_until(timeout) do
    inst = presence
    inst.nil? || ! inst.visible?
  end

  unless is_hidden
    raise ElementNotHidden, "element_class: #{@element_class}, options: #{@options.inspect}"
  end
end

#wait_until_present(timeout = nil) ⇒ Object



83
84
85
86
87
88
89
90
91
# File 'lib/ae_page_objects/element_proxy.rb', line 83

def wait_until_present(timeout = nil)
  is_present = Waiter.wait_until(timeout) do
    ! presence.nil?
  end

  unless is_present
    raise ElementNotPresent, "element_class: #{@element_class}, options: #{@options.inspect}"
  end
end

#wait_until_visible(timeout = nil) ⇒ Object



61
62
63
64
65
66
67
68
69
70
# File 'lib/ae_page_objects/element_proxy.rb', line 61

def wait_until_visible(timeout = nil)
  is_visible = Waiter.wait_until(timeout) do
    inst = presence
    ! inst.nil? && inst.visible?
  end

  unless is_visible
    raise ElementNotVisible, "element_class: #{@element_class}, options: #{@options.inspect}"
  end
end