Class: Watir::ElementLocator

Inherits:
Object
  • Object
show all
Includes:
Selenium, Exception
Defined in:
lib/watir-webdriver/locators/element_locator.rb

Direct Known Subclasses

ButtonLocator, TableRowLocator, TextFieldLocator

Constant Summary collapse

WD_FINDERS =
[
  :class,
  :class_name,
  :css,
  :id,
  :link,
  :link_text,
  :name,
  :partial_link_text,
  :tag_name,
  :xpath
]

Instance Method Summary collapse

Constructor Details

#initialize(wd, selector, valid_attributes) ⇒ ElementLocator

Returns a new instance of ElementLocator


20
21
22
23
24
# File 'lib/watir-webdriver/locators/element_locator.rb', line 20

def initialize(wd, selector, valid_attributes)
  @wd               = wd
  @selector         = selector.dup
  @valid_attributes = valid_attributes
end

Instance Method Details

#locateObject


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/watir-webdriver/locators/element_locator.rb', line 26

def locate
  # short-circuit if :id is given
  if e = by_id
    return e
  end

  if @selector.size == 1
    element = find_first_by_one
  else
    element = find_first_by_multiple
  end

  # this actually only applies when finding by xpath - browser.text_field(:xpath, "//input[@type='radio']")
  # we don't need to validate the element if we built the xpath ourselves.
  validate_element(element) if element
rescue WebDriver::Error::NoSuchElementError => wde
  nil
end

#locate_allObject


45
46
47
48
49
50
51
# File 'lib/watir-webdriver/locators/element_locator.rb', line 45

def locate_all
  if @selector.size == 1
    find_all_by_one
  else
    find_all_by_multiple
  end
end