class Selenium::WebDriver::Remote::Bridge::LocatorConverter
Constants
- ESCAPE_CSS_REGEXP
- UNICODE_CODE_POINT
Public Instance Methods
convert(how, what)
click to toggle source
Converts a locator to a specification compatible one. @param [String, Symbol] how @param [String] what
# File lib/selenium/webdriver/remote/bridge/locator_converter.rb, line 34 def convert(how, what) how = SearchContext.finders[how.to_sym] || how case how when 'class name' how = 'css selector' what = ".#{escape_css(what.to_s)}" when 'id' how = 'css selector' what = "##{escape_css(what.to_s)}" when 'name' how = 'css selector' what = "*[name='#{escape_css(what.to_s)}']" end if what.is_a?(Hash) what = what.each_with_object({}) do |(h, w), hash| h, w = convert(h.to_s, w) hash[h] = w end end [how, what] end
Private Instance Methods
escape_css(string)
click to toggle source
Escapes invalid characters in CSS selector. @see mathiasbynens.be/notes/css-escapes
# File lib/selenium/webdriver/remote/bridge/locator_converter.rb, line 66 def escape_css(string) string = string.gsub(ESCAPE_CSS_REGEXP) { |match| "\\#{match}" } string = "\\#{UNICODE_CODE_POINT + Integer(string[0])} #{string[1..]}" if string[0]&.match?(/[[:digit:]]/) string end