Module: Appium::Core::Base::SearchContext
- Included in:
- Driver, Selenium::WebDriver::Element
- Defined in:
- lib/appium_lib_core/common/base/search_context.rb
Constant Summary collapse
- FINDERS =
rubocop:disable Layout/AlignHash
::Selenium::WebDriver::SearchContext::FINDERS.merge( accessibility_id: 'accessibility id', image: '-image', custom: '-custom', # Android uiautomator: '-android uiautomator', # Unavailable in Espresso viewtag: '-android viewtag', # Available in Espresso data_matcher: '-android datamatcher', # Available in Espresso # iOS uiautomation: '-ios uiautomation', predicate: '-ios predicate string', class_chain: '-ios class chain', # Windows with windows prefix windows_uiautomation: '-windows uiautomation', # Tizen with Tizen prefix tizen_uiautomation: '-tizen uiautomation' )
Instance Method Summary collapse
-
#find_element(*args) ⇒ Element
rubocop:disable Metrics/LineLength.
-
#find_elements(*args) ⇒ Object
Find all elements matching the given arguments.
Instance Method Details
#find_element(how, what) ⇒ Element #find_element(opts) ⇒ Element
rubocop:disable Metrics/LineLength
Find the first element matching the given arguments
- Android can find with uiautomator like a UISelector.
- iOS can find with a UIAutomation command.
- iOS, only for XCUITest(WebDriverAgent), can find with a class chain
Find with image
Return an element if current view has a partial image. The logic depends on template matching by OpenCV. image-comparison
You can handle settings for the comparision following here
Espresso datamatcher
Espresso has an _onData_ matcher for more reference that allows you to target adapters instead of Views. This method find methods based on reflections
This is a selector strategy that allows users to pass a selector of the form:
{ name: '
- name: The name of a method to invoke. The method must return a Hamcrest Matcher
- args: The args provided to the method
- class: The class name that the method is part of (defaults to
org.hamcrest.Matchers). Can be fully qualified, or simple, and simple defaults toandroidx.test.espresso.matcherpackage (e.g.:class=CursorMatchersfully qualified isclass=androidx.test.espresso.matcher.CursorMatchers
See example how to send datamatcher in Ruby client
rubocop:enable Metrics/LineLength
131 132 133 134 135 136 137 138 139 140 141 |
# File 'lib/appium_lib_core/common/base/search_context.rb', line 131 def find_element(*args) how, what = extract_args(args) by = _set_by_from_finders(how) begin bridge.find_element_by by, what.to_s, ref rescue Selenium::WebDriver::Error::TimeOutError # will deprecate raise Selenium::WebDriver::Error::NoSuchElementError rescue Selenium::WebDriver::Error::TimeoutError raise Selenium::WebDriver::Error::NoSuchElementError end end |
#find_elements(*args) ⇒ Object
Find all elements matching the given arguments
148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/appium_lib_core/common/base/search_context.rb', line 148 def find_elements(*args) how, what = extract_args(args) by = _set_by_from_finders(how) begin bridge.find_elements_by by, what.to_s, ref rescue Selenium::WebDriver::Error::TimeOutError # will deprecate [] rescue Selenium::WebDriver::Error::TimeoutError [] end end |