Sha256: 23727b0f27d5fb2e7fc3fbc5e338d329b779cc41117edf74ec257a1778f16b15

Contents?: true

Size: 1.38 KB

Versions: 4

Compression:

Stored size: 1.38 KB

Contents

# frozen_string_literal: true

module Watir
  module Locators
    class TextField
      class SelectorBuilder
        class XPath < Element::SelectorBuilder::XPath
          def text_string
            return super if @adjacent

            @built[:text] = @selector.delete(:text) if @selector.key?(:text)
            ''
          end

          def additional_string
            return '' if @adjacent

            type_string(@selector.delete(:type))
          end

          def tag_string
            @selector[:tag_name] = 'input' unless @adjacent
            super
          end

          def type_string(type)
            if type.eql?(true)
              "[#{negative_type_text}]"
            elsif Watir::TextField::NON_TEXT_TYPES.include?(type)
              msg = "TextField Elements can not be located by type: #{type}"
              raise LocatorException, msg
            elsif type.nil?
              "[not(@type) or (#{negative_type_text})]"
            else
              "[#{process_attribute(:type, type)}]"
            end
          end

          def negative_type_text
            Watir::TextField::NON_TEXT_TYPES.map { |type|
              lhs = lhs_for(:type, downcase: true)
              rhs = SelectorBuilder::XpathSupport.downcase(SelectorBuilder::XpathSupport.escape(type))
              "#{lhs}!=#{rhs}"
            }.join(' and ')
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
watir-7.3.0 lib/watir/locators/text_field/selector_builder/xpath.rb
watir-7.2.2 lib/watir/locators/text_field/selector_builder/xpath.rb
watir-7.2.1 lib/watir/locators/text_field/selector_builder/xpath.rb
watir-7.2.0 lib/watir/locators/text_field/selector_builder/xpath.rb