Class: Locator::Element

Inherits:
Object
  • Object
show all
Defined in:
lib/locator/element.rb,
lib/locator/element/area.rb,
lib/locator/element/file.rb,
lib/locator/element/form.rb,
lib/locator/element/link.rb,
lib/locator/element/field.rb,
lib/locator/element/input.rb,
lib/locator/element/label.rb,
lib/locator/element/button.rb,
lib/locator/element/select.rb,
lib/locator/element/content.rb,
lib/locator/element/check_box.rb,
lib/locator/element/text_area.rb,
lib/locator/element/form_element.rb,
lib/locator/element/hidden_field.rb,
lib/locator/element/radio_button.rb,
lib/locator/element/elements_list.rb,
lib/locator/element/select_option.rb,
lib/locator/element/labeled_element.rb

Defined Under Namespace

Classes: Area, Button, CheckBox, Content, ElementsList, Field, File, Form, FormElement, HiddenField, Input, Label, LabeledElement, Link, RadioButton, Select, SelectOption, TextArea

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Element

Returns a new instance of Element.



27
28
29
30
# File 'lib/locator/element.rb', line 27

def initialize(*args)
  @attributes, @name = args.last.is_a?(Hash) ? args.pop : {}, args.pop
  @locatables = (attributes.delete(:matches) || [:content]) << :id
end

Instance Attribute Details

#attributesObject (readonly)

Returns the value of attribute attributes.



25
26
27
# File 'lib/locator/element.rb', line 25

def attributes
  @attributes
end

#cssObject (readonly)

Returns the value of attribute css.



25
26
27
# File 'lib/locator/element.rb', line 25

def css
  @css
end

#locatablesObject (readonly)

Returns the value of attribute locatables.



25
26
27
# File 'lib/locator/element.rb', line 25

def locatables
  @locatables
end

#nameObject (readonly)

Returns the value of attribute name.



25
26
27
# File 'lib/locator/element.rb', line 25

def name
  @name
end

Instance Method Details

#all(scope, *args) ⇒ Object



36
37
38
39
40
41
# File 'lib/locator/element.rb', line 36

def all(scope, *args)
  attributes, selector = args.last.is_a?(Hash) ? args.pop : {}, args.pop
  result = lookup(scope, selector, attributes)
  result.sort! if selector
  result
end

#locate(*args) ⇒ Object



32
33
34
# File 'lib/locator/element.rb', line 32

def locate(*args)
  all(*args).first # || raise(ElementNotFound.new(*args))
end

#xpath(*args) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/locator/element.rb', line 43

def xpath(*args)
  options    = args.last.is_a?(Hash) ? args.pop : {}
  attributes = self.attributes.merge(options.except(:xpath, :css)) # TODO move to Xpath?
  xpath, css = options.values_at(:xpath, :css)

  xpath ||= css ? ::Nokogiri::CSS.xpath_for(*css).first : args.pop
  Xpath.new(xpath || name || '*', attributes).to_s
end