Module: Webdrone::XPath

Extended by:
XPath
Includes:
XPath::DSL
Included in:
XPath
Defined in:
lib/webdrone/xpath.rb

Overview

Code from teamcapybara/xpath Copyright © 2016 Jonas Nicklas - MIT LICENSE

Instance Method Summary collapse

Instance Method Details

#button(locator) ⇒ Object

Match a submit, image, or button element.

Parameters:

  • Value, title, id, or image alt attribute of the button



26
27
28
29
30
31
# File 'lib/webdrone/xpath.rb', line 26

def button(locator)
  locator = locator.to_s
  button = descendant(:input)[attr(:type).one_of('submit', 'reset', 'image', 'button')][attr(:id).equals(locator) | attr(:value).is(locator) | attr(:title).is(locator)]
  button += descendant(:button)[attr(:id).equals(locator) | attr(:value).is(locator) | string.n.is(locator) | attr(:title).is(locator)]
  button + descendant(:input)[attr(:type).equals('image')][attr(:alt).is(locator)]
end

#checkbox(locator) ⇒ Object

Match any input element of type checkbox.

Parameters:

  • Label, id, or name of the checkbox to match



92
93
94
95
# File 'lib/webdrone/xpath.rb', line 92

def checkbox(locator)
  locator = locator.to_s
  locate_field(descendant(:input)[attr(:type).equals('checkbox')], locator)
end

#definition_description(locator) ⇒ Object

Match any ‘dd’ element.

Parameters:

  • Id of the ‘dd’ element or text from preciding ‘dt’ element content



153
154
155
156
# File 'lib/webdrone/xpath.rb', line 153

def definition_description(locator)
  locator = locator.to_s
  descendant(:dd)[attr(:id).equals(locator) | previous_sibling(:dt)[string.n.equals(locator)]]
end

#field(locator) ⇒ Object

Match any input, textarea, or select element that doesn’t have a type of submit, image, or hidden.

Parameters:

  • Label, id, or name of field to match



58
59
60
61
62
# File 'lib/webdrone/xpath.rb', line 58

def field(locator)
  locator = locator.to_s
  xpath = descendant(:input, :textarea, :select)[~attr(:type).one_of('submit', 'image', 'hidden')]
  locate_field(xpath, locator)
end

#fieldset(locator) ⇒ Object

Match any fieldset element.

Parameters:

  • Legend or id of the fieldset



47
48
49
50
# File 'lib/webdrone/xpath.rb', line 47

def fieldset(locator)
  locator = locator.to_s
  descendant(:fieldset)[attr(:id).equals(locator) | child(:legend)[string.n.is(locator)]]
end

#file_field(locator) ⇒ Object

Match any input element of type file.

Parameters:

  • Label, id, or name of the file field to match



112
113
114
115
# File 'lib/webdrone/xpath.rb', line 112

def file_field(locator)
  locator = locator.to_s
  locate_field(descendant(:input)[attr(:type).equals('file')], locator)
end

#fillable_field(locator) ⇒ Object

Match any input or textarea element that can be filled with text. This excludes any inputs with a type of submit, image, radio, checkbox, hidden, or file.

Parameters:

  • Label, id, or name of field to match



71
72
73
74
75
# File 'lib/webdrone/xpath.rb', line 71

def fillable_field(locator)
  locator = locator.to_s
  xpath = descendant(:input, :textarea)[~attr(:type).one_of('submit', 'image', 'radio', 'checkbox', 'hidden', 'file')]
  locate_field(xpath, locator)
end

Match an a link element.

Parameters:

  • Text, id, title, or image alt attribute of the link



15
16
17
18
19
# File 'lib/webdrone/xpath.rb', line 15

def link(locator)
  locator = locator.to_s
  link = descendant(:a)[attr(:href)]
  link[attr(:id).equals(locator) | string.n.is(locator) | attr(:title).is(locator) | descendant(:img)[attr(:alt).is(locator)]]
end

Match anything returned by either #link or #button.

Parameters:

  • Text, id, title, or image alt attribute of the link or button



38
39
40
# File 'lib/webdrone/xpath.rb', line 38

def link_or_button(locator)
  link(locator) + button(locator)
end

#optgroup(locator) ⇒ Object

Match an optgroup element.

Parameters:

  • Label for the option group



122
123
124
125
# File 'lib/webdrone/xpath.rb', line 122

def optgroup(locator)
  locator = locator.to_s
  descendant(:optgroup)[attr(:label).is(locator)]
end

#option(locator) ⇒ Object

Match an option element.

Parameters:

  • Visible text of the option



132
133
134
135
# File 'lib/webdrone/xpath.rb', line 132

def option(locator)
  locator = locator.to_s
  descendant(:option)[string.n.is(locator)]
end

#radio_button(locator) ⇒ Object

Match any input element of type radio.

Parameters:

  • Label, id, or name of the radio button to match



102
103
104
105
# File 'lib/webdrone/xpath.rb', line 102

def radio_button(locator)
  locator = locator.to_s
  locate_field(descendant(:input)[attr(:type).equals('radio')], locator)
end

#select(locator) ⇒ Object

Match any select element.

Parameters:

  • Label, id, or name of the field to match



82
83
84
85
# File 'lib/webdrone/xpath.rb', line 82

def select(locator)
  locator = locator.to_s
  locate_field(descendant(:select), locator)
end

#table(locator) ⇒ Object

Match any table element.

Parameters:

  • Caption or id of the table to match

  • a customizable set of options



144
145
146
147
# File 'lib/webdrone/xpath.rb', line 144

def table(locator)
  locator = locator.to_s
  descendant(:table)[attr(:id).equals(locator) | descendant(:caption).is(locator)]
end