module Appium::Ios

def get_page element=source_window(0)

Returns:
  • (String) -

Parameters:
  • element (Object) -- the element to search. omit to search everything
def get_page element=source_window(0)
  lazy_load_strings
  # @private
  def empty ele
    (ele['name'] || ele['label'] || ele['value']) == nil
  end
  # @private
  def fix_space s
    # ints don't respond to force encoding
    return s unless s.respond_to? :force_encoding
    # char code 160 (name, label) vs 32 (value) will break comparison.
    # convert string to binary and remove 160.
    # \xC2\xA0
    s.force_encoding('binary').gsub("\xC2\xA0".force_encoding('binary'), ' ') if s
  end
  unless empty(element)
    puts "#{element['type']}"
    name = fix_space element['name']
    label = fix_space element['label']
    value = fix_space element['value']
    if name == label && name == value
      puts "   name, label, value: #{name}" if name
    elsif name == label
      puts "   name, label: #{name}" if name
      puts "   value: #{value}" if value
    elsif name == value
      puts "   name, value: #{name}" if name
      puts "  label: #{label}" if label
    else
      puts "   name: #{name}" if name
      puts "  label: #{label}" if label
      puts "  value: #{value}" if value
    end
    # there may be many ids with the same value.
    # output all exact matches.
    id_matches = @strings_xml.select do |key, val|
      val == name || val == label || val == value
    end
    if id_matches && id_matches.length > 0
      match_str = ''
      # [0] = key, [1] = value
      id_matches.each do |match|
        match_str += ' ' * 7 + "#{match[0]}\n"
      end
      puts "   id: #{match_str.strip}\n"
    end
  end
  children = element['children']
  children.each { |c| get_page c } if children
  nil
end