Class: Selenium::WebDriver::Element

Inherits:
Object
  • Object
show all
Includes:
Find
Defined in:
lib/selenium/webdriver/element.rb

Constant Summary

Constants included from Find

Find::FINDERS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Find

#find_element, #find_elements

Constructor Details

#initialize(bridge, id) ⇒ Element

Creates a new Element



14
15
16
# File 'lib/selenium/webdriver/element.rb', line 14

def initialize(bridge, id)
  @bridge, @id = bridge, id
end

Instance Attribute Details

#bridgeObject (readonly)

Returns the value of attribute bridge.



6
7
8
# File 'lib/selenium/webdriver/element.rb', line 6

def bridge
  @bridge
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



22
23
24
# File 'lib/selenium/webdriver/element.rb', line 22

def ==(other)
  other.kind_of?(self.class) && bridge.elementEquals(self, other)
end

#attribute(name) ⇒ String? Also known as: []

Get the value of the given attribute

Parameters:

Returns:

  • (String, nil)

    attribute value



68
69
70
# File 'lib/selenium/webdriver/element.rb', line 68

def attribute(name)
  bridge.getElementAttribute @id, name
end

#clearObject

Clear this element



115
116
117
# File 'lib/selenium/webdriver/element.rb', line 115

def clear
  bridge.clearElement @id
end

#clickObject

Click the element



35
36
37
# File 'lib/selenium/webdriver/element.rb', line 35

def click
  bridge.clickElement @id
end

#displayed?Boolean

Is the element displayed?

Returns:

  • (Boolean)


145
146
147
# File 'lib/selenium/webdriver/element.rb', line 145

def displayed?
  bridge.isElementDisplayed @id
end

#drag_and_drop_by(right_by, down_by) ⇒ Object

Drag and drop this element

Parameters:

  • right_by (Integer)

    number of pixels to drag right

  • down_by (Integer)

    number of pixels to drag down



218
219
220
# File 'lib/selenium/webdriver/element.rb', line 218

def drag_and_drop_by(right_by, down_by)
  bridge.dragElement @id, right_by, down_by
end

#drag_and_drop_on(other) ⇒ Object

Drag and drop this element on the given element

Parameters:



228
229
230
231
232
233
234
235
236
# File 'lib/selenium/webdriver/element.rb', line 228

def drag_and_drop_on(other)
  current_location = location()
  destination      = other.location

  right = destination.x - current_location.x
  down  = destination.y - current_location.y

  drag_and_drop_by right, down
end

#enabled?Boolean

Is the element enabled?

Returns:

  • (Boolean)


125
126
127
# File 'lib/selenium/webdriver/element.rb', line 125

def enabled?
  bridge.isElementEnabled @id
end

#hashObject



27
28
29
# File 'lib/selenium/webdriver/element.rb', line 27

def hash
  ref.hash
end

#hoverObject

Hover over this element. Not applicable to all browsers.



185
186
187
# File 'lib/selenium/webdriver/element.rb', line 185

def hover
  bridge.hoverOverElement @id
end

#inspectObject



18
19
20
# File 'lib/selenium/webdriver/element.rb', line 18

def inspect
  '#<%s:0x%x id=%s tag_name=%s>' % [self.class, hash*2, @id.inspect, tag_name.inspect]
end

#locationWebDriver::Point

Get the location of this element.

Returns:



195
196
197
# File 'lib/selenium/webdriver/element.rb', line 195

def location
  bridge.getElementLocation @id
end

#refObject

for Find and execute_script



263
264
265
# File 'lib/selenium/webdriver/element.rb', line 263

def ref
  @id
end

#selectObject

Select this element



153
154
155
# File 'lib/selenium/webdriver/element.rb', line 153

def select
  bridge.setElementSelected @id
end

#selected?Boolean

Is the element selected?

Returns:

  • (Boolean)


135
136
137
# File 'lib/selenium/webdriver/element.rb', line 135

def selected?
  bridge.isElementSelected @id
end

#send_keys(*args) ⇒ Object Also known as: send_key

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:



96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/selenium/webdriver/element.rb', line 96

def send_keys(*args)
  args.each do |arg|
    case arg
    when Symbol
      arg = Keys[arg]
    when Array
      arg = arg.map { |e| e.kind_of?(Symbol) ? Keys[e] : e }.join
      arg << Keys[:null]
    end

    bridge.sendKeysToElement(@id, arg.to_s)
  end
end

#sizeWebDriver::Dimension

Get the size of this element



205
206
207
# File 'lib/selenium/webdriver/element.rb', line 205

def size
  bridge.getElementSize @id
end

#style(prop) ⇒ Object

Get the value of the given CSS property



177
178
179
# File 'lib/selenium/webdriver/element.rb', line 177

def style(prop)
  bridge.getElementValueOfCssProperty @id, prop
end

#submitObject

Submit this element



161
162
163
# File 'lib/selenium/webdriver/element.rb', line 161

def submit
  bridge.submitElement @id
end

#tag_nameString

Get the tag name of this element

Returns:



45
46
47
# File 'lib/selenium/webdriver/element.rb', line 45

def tag_name
  bridge.getElementTagName @id
end

#textString

Get the text content of this element

Returns:



78
79
80
# File 'lib/selenium/webdriver/element.rb', line 78

def text
  bridge.getElementText @id
end

#to_json(*args) ⇒ Object

Convert to a WebElement JSON Object for transmission over the wire.



274
275
276
# File 'lib/selenium/webdriver/element.rb', line 274

def to_json(*args)
  { :ELEMENT => @id }.to_json(*args)
end

#toggleObject

Toggle this element



169
170
171
# File 'lib/selenium/webdriver/element.rb', line 169

def toggle
  bridge.toggleElement @id
end

#valueString

Get the value of this element

Returns:



55
56
57
# File 'lib/selenium/webdriver/element.rb', line 55

def value
  bridge.getElementValue @id
end