Module: PageObject::Platforms::WatirWebDriver::Element

Defined in:
lib/page-object/platforms/watir_webdriver/element.rb

Instance Method Summary collapse

Instance Method Details

#==(other) ⇒ Object

compare this element to another to determine if they are equal



62
63
64
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 62

def ==(other)
  other.is_a? self.class and element == other.element
end

#attribute(attribute_name) ⇒ String?

Get the value of a the given attribute of the element. Will return the current value, even if this has been modified after the page has been loaded. More exactly, this method will return the value of the given attribute, unless that attribute is not present, in which case the value of the property with the same name is returned. If neither value is set, nil is returned. The “style” attribute is converted as best can be to a text representation with a trailing semi-colon. The following are deemed to be “boolean” attributes, and will return either “true” or “false”:

async, autofocus, autoplay, checked, compact, complete, controls, declare, defaultchecked, defaultselected, defer, disabled, draggable, ended, formnovalidate, hidden, indeterminate, iscontenteditable, ismap, itemscope, loop, multiple, muted, nohref, noresize, noshade, novalidate, nowrap, open, paused, pubdate, readonly, required, reversed, scoped, seamless, seeking, selected, spellcheck, truespeed, willvalidate

Finally, the following commonly mis-capitalized attribute/property names are evaluated as expected:

class, readonly

Parameters:

Returns:

  • (String, nil)

    attribute value



105
106
107
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 105

def attribute(attribute_name)
  element.attribute_value attribute_name
end

#centreObject

Get centre coordinates of element



285
286
287
288
289
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 285

def centre
  location = element.wd.location
  size = element.wd.size
  {'y' => (location['y'] + (size['height']/2)), 'x' => (location['x'] + (size['width']/2))}
end

#clearObject

clear the contents of the element



236
237
238
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 236

def clear
  element.clear
end

#double_clickObject

double click the element



126
127
128
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 126

def double_click
  element.double_click
end

#exists?Boolean

return true if an element exists

Returns:

  • (Boolean)


21
22
23
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 21

def exists?
  element.exists?
end

#fire_event(event_name) ⇒ Object

Fire the provided event on the current element



112
113
114
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 112

def fire_event(event_name)
  element.fire_event(event_name)
end

#flashObject

flash the element by temporarily changing the background color



28
29
30
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 28

def flash
  element.flash
end

#focusObject

Set the focus to the current element



143
144
145
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 143

def focus
  element.focus
end

#heightObject

Get height of element



271
272
273
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 271

def height
  element.wd.size['height']
end

#hoverObject

hover over the element



119
120
121
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 119

def hover
  element.hover
end

#htmlString

Get the html for the element

Returns:



46
47
48
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 46

def html
  element.html
end

#idObject

get the id of the element



243
244
245
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 243

def id
  element.id
end

#locationObject

location of element (x, y)



257
258
259
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 257

def location
  element.wd.location
end

#parentObject

find the parent element



133
134
135
136
137
138
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 133

def parent
  parent = element.parent
  type = element.type if parent.tag_name.to_sym == :input
  cls = ::PageObject::Elements.element_class_for(parent.tag_name, type)
  cls.new(parent, :platform => :watir_webdriver)
end

#right_clickObject

Right click on an element



157
158
159
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 157

def right_click
  element.right_click
end

#scroll_into_viewObject

Scroll until the element is viewable



250
251
252
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 250

def scroll_into_view
  element.wd.location_once_scrolled_into_view
end

#select_text(text) ⇒ Object

Select the provided text



150
151
152
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 150

def select_text(text)
  element.select_text text
end

#send_keys(*args) ⇒ Object

Send keystrokes to this element

Examples:

element.send_keys "foo"                     #=> value: 'foo'
element.send_keys "tet", :arrow_left, "s"   #=> value: 'test'
element.send_keys [:control, 'a'], :space   #=> value: ' '

Parameters:

See Also:

  • Selenium::WebDriver::Keys::KEYS


229
230
231
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 229

def send_keys(*args)
  element.send_keys(*args)
end

#sizeObject

size of element (width, height)



264
265
266
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 264

def size
  element.wd.size
end

#tag_nameString

Get the tag name of this element

Returns:



71
72
73
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 71

def tag_name
  element.tag_name
end

#textString

Get the text for the element

Returns:



37
38
39
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 37

def text
  element.text
end

#valueString

Get the value of this element

Returns:



55
56
57
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 55

def value
  element.value
end

#visible?Boolean

return true if an element is visible

Returns:

  • (Boolean)


14
15
16
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 14

def visible?
  element.present?
end

#wait_until(timeout = ::PageObject.default_element_wait, message = nil, &block) ⇒ Object

Waits until the block returns true

Parameters:

  • (defaults (Integer)

    to: 5) seconds to wait before timing out

  • the (String)

    message to display if the event timeouts

  • the

    block to execute when the event occurs



212
213
214
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 212

def wait_until(timeout=::PageObject.default_element_wait, message=nil, &block)
  Object::Watir::Wait.until(timeout, message, &block)
end

#when_not_present(timeout = ::PageObject.default_element_wait) ⇒ Object

Waits until the element is not present

timing out

Parameters:

  • (defaults (Integer)

    to: 5) seconds to wait before



177
178
179
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 177

def when_not_present(timeout=::PageObject.default_element_wait)
  element.wait_while_present(timeout)
end

#when_not_visible(timeout = ::PageObject.default_element_wait) ⇒ Object

Waits until the element is not visible

Parameters:

  • (defaults (Integer)

    to: 5) seconds to wait before timing out



198
199
200
201
202
203
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 198

def when_not_visible(timeout=::PageObject.default_element_wait)
  Object::Watir::Wait.while(timeout, "Element still visible after #{timeout} seconds") do
    visible?
  end
  self
end

#when_present(timeout = ::PageObject.default_element_wait) ⇒ Object

Waits until the element is present

Parameters:

  • (defaults (Integer)

    to: 5) seconds to wait before timing out



166
167
168
169
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 166

def when_present(timeout=::PageObject.default_element_wait)
  element.wait_until_present(timeout)
  self
end

#when_visible(timeout = ::PageObject.default_element_wait) ⇒ Object

Waits until the element is visible

Parameters:

  • (defaults (Integer)

    to: 5) seconds to wait before timing out



186
187
188
189
190
191
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 186

def when_visible(timeout=::PageObject.default_element_wait)
  Object::Watir::Wait.until(timeout, "Element was not visible in #{timeout} seconds") do
    visible?
  end
  self
end

#widthObject

Get width of element



278
279
280
# File 'lib/page-object/platforms/watir_webdriver/element.rb', line 278

def width
  element.wd.size['width']
end