class Watir::Locators::TextField::SelectorBuilder

Public Instance Methods

build_wd_selector(selectors) click to toggle source
# File lib/watir-webdriver/locators/text_field/selector_builder.rb, line 5
def build_wd_selector(selectors)
  return if selectors.values.any? { |e| e.kind_of? Regexp }

  selectors.delete(:tag_name)

  textarea_attr_exp = xpath_builder.attribute_expression(:textarea, selectors)
  input_attr_exp = xpath_builder.attribute_expression(:input, selectors)

  xpath = ".//input[(not(@type) or (#{negative_type_expr}))"
  xpath << " and #{input_attr_exp}" unless input_attr_exp.empty?
  xpath << "] "
  xpath << "| .//textarea"
  xpath << "[#{textarea_attr_exp}]" unless textarea_attr_exp.empty?

  p build_wd_selector: xpath if $DEBUG

  [:xpath, xpath]
end

Private Instance Methods

negative_type_expr() click to toggle source
# File lib/watir-webdriver/locators/text_field/selector_builder.rb, line 26
def negative_type_expr
  Watir::TextField::NON_TEXT_TYPES.map do |type|
    "%s!=%s" % [XpathSupport.downcase('@type'), type.inspect]
  end.join(' and ')
end