Skip to content

Commit bbcd38b

Browse files
committedApr 28, 2014
Fix complex find
1 parent 684aa0d commit bbcd38b

File tree

3 files changed

+17
-13
lines changed

3 files changed

+17
-13
lines changed
 

‎android_tests/lib/android/specs/common/device.rb

+9-2
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,16 @@
6161
strs.has_key?("activity_save_restore").must_equal true
6262
end
6363

64+
def must_return_element element
65+
element.class.must_equal Selenium::WebDriver::Element
66+
end
67+
6468
t 'complex_find' do
65-
act = complex_find [[[3, 'Accessibility'], [14, true]]]
66-
act.class.must_equal Selenium::WebDriver::Element
69+
find('Views').click
70+
must_return_element complex_find(mode: 'scroll', selectors: [[[3, 'tabs']]])
71+
must_return_element complex_find(mode: 'all', selectors: [[[3, 'i']]]).first
72+
must_return_element complex_find(selectors: [[[3, 'tabs']]])
73+
back
6774
end
6875

6976
t 'key_event' do

‎lib/appium_lib/android/element/generic.rb

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def scroll_to text
2727
# descriptionContains(text)
2828
[[7, text]]
2929

30-
complex_find 'scroll', args
30+
complex_find mode: 'scroll', selectors: args
3131
end
3232

3333
# Scroll to an element with the exact target text or description.
@@ -40,7 +40,7 @@ def scroll_to_exact text
4040
# description(text)
4141
[[5, text]]
4242

43-
complex_find 'scroll', args
43+
complex_find mode: 'scroll', selectors: args
4444
end
4545
end # module Android
4646
end # module Appium

‎lib/appium_lib/device/device.rb

+6-9
Original file line numberDiff line numberDiff line change
@@ -140,18 +140,15 @@ def key_event(key, metastate=nil)
140140
end
141141

142142
add_endpoint_method(:complex_find, 'session/:session_id/appium/app/complex_find') do
143-
def complex_find(mode, selectors=nil)
144-
if selectors.nil?
145-
selectors = mod.dup
146-
mod = false
147-
end
148-
149-
selector_array = mod ? [mod] : []
150-
selector_array.push selectors
143+
def complex_find(opts)
144+
mode = opts.fetch :mode, false
145+
selectors = opts.fetch :selectors, false
146+
raise 'Complex find must have selectors' unless selectors
147+
selectors.insert(0, mode) if mode
151148

152149
ids = execute :complex_find, {}, selectors
153-
if mod && ids.length > 1
154150

151+
if mode == 'all' && ids.length > 1
155152
return ids.map { |id| Selenium::WebDriver::Element.new self, element_id_from(id) }
156153
else
157154
return Selenium::WebDriver::Element.new self, element_id_from(ids)

0 commit comments

Comments
 (0)