@@ -59,28 +59,33 @@ def xpaths(xpath_str)
59
59
class CountElements < Nokogiri ::XML ::SAX ::Document
60
60
attr_reader :result
61
61
62
- def initialize
62
+ def initialize ( platform )
63
63
reset
64
+ @platform = platform
64
65
end
65
66
66
67
def reset
67
68
@result = Hash . new 0
68
69
end
69
70
70
71
# http://nokogiri.org/Nokogiri/XML/SAX/Document.html
71
- def start_element ( name , attrs = [ ] , driver = $driver)
72
- # Count only visible elements. Android is always visible
73
- element_visible = driver . device_is_android? ? true : Hash [ attrs ] [ 'visible' ] == 'true'
72
+ def start_element ( name , attrs = [ ] )
73
+ element_visible = case @platform . to_sym
74
+ when :android
75
+ true
76
+ else # :ios, :windows
77
+ Hash [ attrs ] [ 'visible' ] == 'true'
78
+ end
79
+
74
80
@result [ name ] += 1 if element_visible
75
81
end
76
82
77
83
def formatted_result
78
- message = ''
79
- sorted = @result . sort_by { |_element , count | count } . reverse
80
- sorted . each do |element , count |
81
- message += "#{ count } x #{ element } \n "
82
- end
83
- message . strip
84
+ @result
85
+ . sort_by { |_element , count | count }
86
+ . reverse
87
+ . each_with_object ( '' ) { |element , acc | acc << "#{ element [ 1 ] } x #{ element [ 0 ] } \n " }
88
+ . strip
84
89
end
85
90
end # class CountElements
86
91
@@ -94,7 +99,7 @@ def formatted_result
94
99
# # x XCUIElementTypeNavigationBar\n1x XCUIElementTypeApplication"
95
100
#
96
101
def get_page_class
97
- parser = @count_elements_parser ||= Nokogiri ::XML ::SAX ::Parser . new ( CountElements . new )
102
+ parser = @count_elements_parser ||= Nokogiri ::XML ::SAX ::Parser . new ( CountElements . new ( @core . device ) )
98
103
99
104
parser . document . reset
100
105
parser . parse get_source
0 commit comments