Class: Watir::Locators::Element::Locator
- Inherits:
-
Object
- Object
- Watir::Locators::Element::Locator
- Defined in:
- lib/watir-webdriver/locators/element/locator.rb
Direct Known Subclasses
Constant Summary collapse
- WD_FINDERS =
[ :class, :class_name, :css, :id, :link, :link_text, :name, :partial_link_text, :tag_name, :xpath ]
- CONVERTABLE_REGEXP =
Regular expressions that can be reliably converted to xpath ‘contains` expressions in order to optimize the .
%r{ \A ([^\[\]\\^$.|?*+()]*) # leading literal characters [^|]*? # do not try to convert expressions with alternates ([^\[\]\\^$.|?*+()]*) # trailing literal characters \z }x
Instance Attribute Summary collapse
-
#element_validator ⇒ Object
readonly
Returns the value of attribute element_validator.
-
#selector_builder ⇒ Object
readonly
Returns the value of attribute selector_builder.
Instance Method Summary collapse
-
#initialize(parent, selector, selector_builder, element_validator) ⇒ Locator
constructor
A new instance of Locator.
- #locate ⇒ Object
- #locate_all ⇒ Object
Constructor Details
#initialize(parent, selector, selector_builder, element_validator) ⇒ Locator
Returns a new instance of Locator.
31 32 33 34 35 36 |
# File 'lib/watir-webdriver/locators/element/locator.rb', line 31 def initialize(parent, selector, selector_builder, element_validator) @parent = parent # either element or browser @selector = selector.dup @selector_builder = selector_builder @element_validator = element_validator end |
Instance Attribute Details
#element_validator ⇒ Object (readonly)
Returns the value of attribute element_validator.
6 7 8 |
# File 'lib/watir-webdriver/locators/element/locator.rb', line 6 def element_validator @element_validator end |
#selector_builder ⇒ Object (readonly)
Returns the value of attribute selector_builder.
5 6 7 |
# File 'lib/watir-webdriver/locators/element/locator.rb', line 5 def selector_builder @selector_builder end |
Instance Method Details
#locate ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/watir-webdriver/locators/element/locator.rb', line 38 def locate e = by_id and return e # short-circuit if :id is given if @selector.size == 1 element = find_first_by_one else element = find_first_by_multiple end # This actually only applies when finding by xpath/css - browser.text_field(:xpath, "//input[@type='radio']") # We don't need to validate the element if we built the xpath ourselves. # It is also used to alter behavior of methods locating more than one type of element # (e.g. text_field locates both input and textarea) element_validator.validate(element, @selector) if element rescue Selenium::WebDriver::Error::NoSuchElementError, Selenium::WebDriver::Error::StaleElementReferenceError nil end |
#locate_all ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/watir-webdriver/locators/element/locator.rb', line 56 def locate_all if @selector.size == 1 find_all_by_one else find_all_by_multiple end end |