Module: Appium::Android::Espresso::Element
- Defined in:
- lib/appium_lib/android/espresso/element.rb,
lib/appium_lib/android/espresso/element/button.rb,
lib/appium_lib/android/espresso/element/generic.rb
Instance Method Summary collapse
-
#button(value) ⇒ Button
Find the first button that contains value or by index.
-
#button_exact(value) ⇒ Button
Find the first button that exactly matches value.
-
#buttons(value = false) ⇒ Array<Button>
Find all buttons containing value.
-
#buttons_exact(value) ⇒ Array<Button>
Find all buttons that exactly match value.
-
#first_button ⇒ Button
Find the first button.
-
#last_button ⇒ Button
Find the last button.
-
#scroll_to(text) ⇒ Element
Scroll to the first element containing target text or description.
-
#scroll_to_exact(text) ⇒ Element
Scroll to the first element with the exact target text or description.
Instance Method Details
#button(value) ⇒ Button
Find the first button that contains value or by index. If int then the button at that index is returned.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/appium_lib/android/espresso/element/button.rb', line 23 def (value) # Don't use ele_index because that only works on one element type. # Android needs to combine button and image button to match iOS. if value.is_a? Numeric index = value raise ArgumentError, "#{index} is not a valid index. Must be >= 1" if index <= 0 # zero index (index: index - 1) end i = find_elements :xpath, (BUTTON, value) e = find_elements :xpath, (IMAGE_BUTTON, value) raise_no_such_element_if_empty(i + e) (i + e)[0] end |
#button_exact(value) ⇒ Button
Find the first button that exactly matches value.
77 78 79 80 81 82 83 84 |
# File 'lib/appium_lib/android/espresso/element/button.rb', line 77 def (value) i = find_elements :xpath, (BUTTON, value) e = find_elements :xpath, (IMAGE_BUTTON, value) raise_no_such_element_if_empty(i + e) (i + e)[0] end |
#buttons(value = false) ⇒ Array<Button>
Find all buttons containing value. If value is omitted, all buttons are returned.
46 47 48 49 50 51 52 |
# File 'lib/appium_lib/android/espresso/element/button.rb', line 46 def (value = false) return unless value i = find_elements :xpath, (BUTTON, value) e = find_elements :xpath, (IMAGE_BUTTON, value) i + e end |
#buttons_exact(value) ⇒ Array<Button>
Find all buttons that exactly match value.
89 90 91 92 93 |
# File 'lib/appium_lib/android/espresso/element/button.rb', line 89 def (value) i = find_elements :xpath, (BUTTON, value) e = find_elements :xpath, (IMAGE_BUTTON, value) i + e end |
#first_button ⇒ Button
Find the first button.
56 57 58 |
# File 'lib/appium_lib/android/espresso/element/button.rb', line 56 def (button_index: 0, image_button_index: 0) end |
#last_button ⇒ Button
Find the last button.
62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/appium_lib/android/espresso/element/button.rb', line 62 def # uiautomator index doesn't support last # and it's 0 indexed = (::Appium::Android::BUTTON).length -= 1 if .positive? = (::Appium::Android::IMAGE_BUTTON).length -= 1 if .positive? (button_index: , image_button_index: ) end |
#scroll_to(text) ⇒ Element
Scroll to the first element containing target text or description. Scroll happens upto 30 times in centre of device width.
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/appium_lib/android/espresso/element/generic.rb', line 23 def scroll_to(text) err = nil w_s = window_rect (1..30).each do |_count| action .move_to_location(w_s.width / 2, (w_s.height * 2) / 5) # pointer based magic number .pointer_down(:left) .move_to_location(0, w_s.height / 5) .release .perform sleep 1 # we must wait finish scrolling return text(text) rescue StandardError => e err = e end raise err end |
#scroll_to_exact(text) ⇒ Element
Scroll to the first element with the exact target text or description. Scroll happens upto 30 times in centre of device width.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/appium_lib/android/espresso/element/generic.rb', line 48 def scroll_to_exact(text) err = nil w_s = window_rect (1..30).each do |_count| action .move_to_location(w_s.width / 2, (w_s.height * 2) / 5) # pointer based magic number .pointer_down(:left) .move_to_location(0, w_s.height / 5) .release .perform sleep 1 # we must wait finish scrolling return text_exact(text) rescue StandardError => e err = e end raise err end |