Module: Webdrone::XPath
Overview
Code from teamcapybara/xpath Copyright © 2016 Jonas Nicklas - MIT LICENSE
Instance Method Summary collapse
-
#button(locator) ⇒ Object
Match a
submit,image, orbuttonelement. -
#checkbox(locator) ⇒ Object
Match any
inputelement of typecheckbox. -
#definition_description(locator) ⇒ Object
Match any ‘dd’ element.
-
#field(locator) ⇒ Object
Match any
input,textarea, orselectelement that doesn’t have a type ofsubmit,image, orhidden. -
#fieldset(locator) ⇒ Object
Match any
fieldsetelement. -
#file_field(locator) ⇒ Object
Match any
inputelement of typefile. -
#fillable_field(locator) ⇒ Object
Match any
inputortextareaelement that can be filled with text. -
#link(locator) ⇒ Object
Match an
alink element. - #link_or_button(locator) ⇒ Object
-
#optgroup(locator) ⇒ Object
Match an
optgroupelement. -
#option(locator) ⇒ Object
Match an
optionelement. -
#radio_button(locator) ⇒ Object
Match any
inputelement of typeradio. -
#select(locator) ⇒ Object
Match any
selectelement. -
#table(locator) ⇒ Object
Match any
tableelement.
Instance Method Details
#button(locator) ⇒ Object
Match a submit, image, or button element.
26 27 28 29 30 31 |
# File 'lib/webdrone/xpath.rb', line 26 def (locator) locator = locator.to_s = descendant(:input)[attr(:type).one_of('submit', 'reset', 'image', 'button')][attr(:id).equals(locator) | attr(:value).is(locator) | attr(:title).is(locator)] += descendant(:button)[attr(:id).equals(locator) | attr(:value).is(locator) | string.n.is(locator) | attr(:title).is(locator)] + descendant(:input)[attr(:type).equals('image')][attr(:alt).is(locator)] end |
#checkbox(locator) ⇒ Object
Match any input element of type checkbox.
94 95 96 97 |
# File 'lib/webdrone/xpath.rb', line 94 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.
155 156 157 158 |
# File 'lib/webdrone/xpath.rb', line 155 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.
58 59 60 61 62 63 |
# 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')] xpath = locate_field(xpath, locator) xpath end |
#fieldset(locator) ⇒ Object
Match any fieldset element.
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.
114 115 116 117 |
# File 'lib/webdrone/xpath.rb', line 114 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.
72 73 74 75 76 77 |
# File 'lib/webdrone/xpath.rb', line 72 def fillable_field(locator) locator = locator.to_s xpath = descendant(:input, :textarea)[~attr(:type).one_of('submit', 'image', 'radio', 'checkbox', 'hidden', 'file')] xpath = locate_field(xpath, locator) xpath end |
#link(locator) ⇒ Object
Match an a link element.
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 |
#link_or_button(locator) ⇒ Object
38 39 40 |
# File 'lib/webdrone/xpath.rb', line 38 def (locator) link(locator) + (locator) end |
#optgroup(locator) ⇒ Object
Match an optgroup element.
124 125 126 127 |
# File 'lib/webdrone/xpath.rb', line 124 def optgroup(locator) locator = locator.to_s descendant(:optgroup)[attr(:label).is(locator)] end |
#option(locator) ⇒ Object
Match an option element.
134 135 136 137 |
# File 'lib/webdrone/xpath.rb', line 134 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.
104 105 106 107 |
# File 'lib/webdrone/xpath.rb', line 104 def (locator) locator = locator.to_s locate_field(descendant(:input)[attr(:type).equals('radio')], locator) end |
#select(locator) ⇒ Object
Match any select element.
84 85 86 87 |
# File 'lib/webdrone/xpath.rb', line 84 def select(locator) locator = locator.to_s locate_field(descendant(:select), locator) end |
#table(locator) ⇒ Object
Match any table element.
146 147 148 149 |
# File 'lib/webdrone/xpath.rb', line 146 def table(locator) locator = locator.to_s descendant(:table)[attr(:id).equals(locator) | descendant(:caption).is(locator)] end |