Match any `input` element of type `checkbox`.
@param [String] locator
Label, id, or name of the checkbox to match
# File lib/xpath/html.rb, line 96 def checkbox(locator) locator = locator.to_s locate_field(descendant(:input)[attr(:type).equals('checkbox')], locator) end
Match any 'dd' element.
@param [String] locator
Id of the 'dd' element or text from preciding 'dt' element content
# File lib/xpath/html.rb, line 162 def definition_description(locator) locator = locator.to_s descendant(:dd)[attr(:id).equals(locator) | previous_sibling(:dt)[string.n.equals(locator)] ] end
Match any `input`, `textarea`, or `select` element that doesn't have a type of `submit`, `image`, or `hidden`.
@param [String] locator
Label, id, or name of field to match
# File lib/xpath/html.rb, line 57 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
Match any `fieldset` element.
@param [String] locator
Legend or id of the fieldset
# File lib/xpath/html.rb, line 45 def fieldset(locator) locator = locator.to_s descendant(:fieldset)[attr(:id).equals(locator) | child(:legend)[string.n.contains(locator)]] end
Match any `input` element of type `file`.
@param [String] locator
Label, id, or name of the file field to match
# File lib/xpath/html.rb, line 118 def file_field(locator) locator = locator.to_s locate_field(descendant(:input)[attr(:type).equals('file')], locator) end
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`.
@param [String] locator
Label, id, or name of field to match
# File lib/xpath/html.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
Match an `a` link element.
@param [String] locator
Text, id, title, or image alt attribute of the link
# File lib/xpath/html.rb, line 11 def link(locator) locator = locator.to_s link = descendant(:a)[attr(:href)] link[attr(:id).equals(locator) | string.n.contains(locator) | attr(:title).contains(locator) | descendant(:img)[attr(:alt).contains(locator)]] end
Match an `optgroup` element.
@param [String] name
Label for the option group
# File lib/xpath/html.rb, line 129 def optgroup(locator) locator = locator.to_s descendant(:optgroup)[attr(:label).contains(locator)] end
Match an `option` element.
@param [String] name
Visible text of the option
# File lib/xpath/html.rb, line 140 def option(locator) locator = locator.to_s descendant(:option)[string.n.equals(locator)] end
Match any `select` element.
@param [String] locator
Label, id, or name of the field to match
# File lib/xpath/html.rb, line 85 def select(locator) locator = locator.to_s locate_field(descendant(:select), locator) end
Match any `table` element.
@param [String] locator
Caption or id of the table to match
@option options [Array] :rows
Content of each cell in each row to match
# File lib/xpath/html.rb, line 153 def table(locator) locator = locator.to_s descendant(:table)[attr(:id).equals(locator) | descendant(:caption).contains(locator)] end
# File lib/xpath/html.rb, line 169 def locate_field(xpath, locator) locate_field = xpath[attr(:id).equals(locator) | attr(:name).equals(locator) | attr(:placeholder).equals(locator) | attr(:id).equals(anywhere(:label)[string.n.contains(locator)].attr(:for))] locate_field += descendant(:label)[string.n.contains(locator)].descendant(xpath) locate_field[~attr(:disabled)] end