Class: Appium::Core::Base::Bridge::W3C
- Inherits:
-
Selenium::WebDriver::Remote::W3C::Bridge
- Object
- Selenium::WebDriver::Remote::W3C::Bridge
- Appium::Core::Base::Bridge::W3C
- Includes:
- Device::AppManagement, Device::AppState, Device::Context, Device::Device, Device::DeviceLock, Device::FileManagement, Device::ImageComparison, Device::ImeActions, Device::KeyEvent, Device::Keyboard, Device::ScreenRecord::Command, Device::Setting, Device::TouchActions, Device::Value
- Defined in:
- lib/appium_lib_core/common/base/bridge/w3c.rb
Constant Summary
Constants included from Device::AppState
Constants included from Device::ImageComparison
Device::ImageComparison::GET_SIMILARITY, Device::ImageComparison::MATCH_FEATURES, Device::ImageComparison::MATCH_TEMPLATE, Device::ImageComparison::MODE
Instance Method Summary collapse
-
#action(async = false) ⇒ Object
Perform touch actions for W3C module.
-
#available_log_types ⇒ Object
logs.
- #commands(command) ⇒ Object
-
#element_attribute(element, name) ⇒ Object
For Appium override.
-
#element_displayed?(element) ⇒ Boolean
For Appium override.
-
#find_element_by(how, what, parent = nil) ⇒ Object
For Appium override.
-
#find_elements_by(how, what, parent = nil) ⇒ Object
For Appium override.
-
#get_timeouts ⇒ Object
Port from MJSONWP.
-
#location ⇒ Object
For Appium No implementation for W3C webdriver module called in ‘extend DriverExtensions::HasLocation`.
-
#log(type) ⇒ Object
For Appium No implementation for W3C webdriver module.
-
#network_connection ⇒ Object
For Appium override called in ‘extend DriverExtensions::HasNetworkConnection`.
-
#network_connection=(type) ⇒ Object
For Appium override called in ‘extend DriverExtensions::HasNetworkConnection`.
-
#page_source ⇒ Object
For Appium override.
-
#send_keys_to_active_element(key) ⇒ Object
Port from MJSONWP.
-
#session_capabilities ⇒ Object
Port from MJSONWP.
-
#sessions ⇒ Object
Returns all available sessions on the Appium server instance.
-
#set_location(lat, lon, alt) ⇒ Object
For Appium No implementation for W3C webdriver module called in ‘extend DriverExtensions::HasLocation`.
- #take_element_screenshot(element) ⇒ Object
- #take_viewport_screenshot ⇒ Object
Methods included from Device::TouchActions
Methods included from Device::Device
Methods included from Device::ScreenRecord::Command
#stop_and_save_recording_screen, #stop_recording_screen
Methods included from Device::AppState
Methods included from Device::AppManagement
#activate_app, #app_installed?, #app_strings, #background_app, #close_app, #install_app, #launch_app, #remove_app, #reset, #terminate_app
Methods included from Device::ImageComparison
#compare_images, #find_image_occurrence, #get_images_similarity, #match_images_features
Methods included from Device::KeyEvent
#keyevent, #long_press_keycode, #press_keycode
Methods included from Device::FileManagement
#pull_file, #pull_folder, #push_file
Methods included from Device::Value
#replace_value, #set_immediate_value
Methods included from Device::Context
#available_contexts, #current_context, #set_context, #switch_to_default_context, #within_context
Methods included from Device::Setting
#get_settings, #update_settings
Methods included from Device::ImeActions
#ime_activate, #ime_activated, #ime_active_engine, #ime_available_engines, #ime_deactivate
Methods included from Device::Keyboard
#hide_keyboard, #is_keyboard_shown
Methods included from Device::DeviceLock
#device_locked?, #lock, #unlock
Instance Method Details
#action(async = false) ⇒ Object
Perform touch actions for W3C module. Generate ‘touch` pointer action here and users can use this via `driver.action`
-
seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/W3CActionBuilder.html
-
seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/PointerActions.html
-
seleniumhq.github.io/selenium/docs/api/rb/Selenium/WebDriver/KeyActions.html
‘mouse’ action is by default in the Ruby client. Appium server force the ‘mouse` action to `touch` once in the server side. So we don’t consider the case.
58 59 60 61 62 63 64 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 58 def action(async = false) # Used for default duration of each touch actions # Override from 250 milliseconds to 50 milliseconds action_builder = super action_builder.default_move_duration = 0.05 action_builder end |
#available_log_types ⇒ Object
logs
For Appium No implementation for W3C webdriver module
171 172 173 174 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 171 def available_log_types types = execute :get_available_log_types Array(types).map(&:to_sym) end |
#commands(command) ⇒ Object
35 36 37 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 35 def commands(command) ::Appium::Core::Commands::W3C::COMMANDS[command] end |
#element_attribute(element, name) ⇒ Object
For Appium override
103 104 105 106 107 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 103 def element_attribute(element, name) # For W3C in Selenium Client # execute_atom :getAttribute, element, name execute :get_element_attribute, id: element.ref, name: name end |
#element_displayed?(element) ⇒ Boolean
For Appium override
94 95 96 97 98 99 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 94 def element_displayed?(element) # For W3C # https://github.com/SeleniumHQ/selenium/commit/b618499adcc3a9f667590652c5757c0caa703289 # execute_atom :isDisplayed, element execute :is_element_displayed, id: element.ref end |
#find_element_by(how, what, parent = nil) ⇒ Object
For Appium override
111 112 113 114 115 116 117 118 119 120 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 111 def find_element_by(how, what, parent = nil) how, what = convert_locators(how, what) id = if parent execute :find_child_element, { id: parent }, { using: how, value: what } else execute :find_element, {}, { using: how, value: what } end ::Selenium::WebDriver::Element.new self, element_id_from(id) end |
#find_elements_by(how, what, parent = nil) ⇒ Object
For Appium override
124 125 126 127 128 129 130 131 132 133 134 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 124 def find_elements_by(how, what, parent = nil) how, what = convert_locators(how, what) ids = if parent execute :find_child_elements, { id: parent }, { using: how, value: what } else execute :find_elements, {}, { using: how, value: what } end ids.map { |id| ::Selenium::WebDriver::Element.new self, element_id_from(id) } end |
#get_timeouts ⇒ Object
Port from MJSONWP
67 68 69 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 67 def get_timeouts execute :get_timeouts end |
#location ⇒ Object
For Appium No implementation for W3C webdriver module called in ‘extend DriverExtensions::HasLocation`
153 154 155 156 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 153 def location obj = execute(:get_location) || {} ::Selenium::WebDriver::Location.new obj['latitude'], obj['longitude'], obj['altitude'] end |
#log(type) ⇒ Object
For Appium No implementation for W3C webdriver module
178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 178 def log(type) data = execute :get_log, {}, { type: type.to_s } Array(data).map do |l| begin ::Selenium::WebDriver::LogEntry.new l.fetch('level', 'UNKNOWN'), l.fetch('timestamp'), l.fetch('message') rescue KeyError next end end end |
#network_connection ⇒ Object
For Appium override called in ‘extend DriverExtensions::HasNetworkConnection`
139 140 141 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 139 def network_connection execute :get_network_connection end |
#network_connection=(type) ⇒ Object
For Appium override called in ‘extend DriverExtensions::HasNetworkConnection`
146 147 148 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 146 def network_connection=(type) execute :set_network_connection, {}, { parameters: { type: type } } end |
#page_source ⇒ Object
For Appium override
84 85 86 87 88 89 90 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 84 def page_source # For W3C # execute_script('var source = document.documentElement.outerHTML;' \ # 'if (!source) { source = new XMLSerializer().serializeToString(document); }' \ # 'return source;') execute :get_page_source end |
#send_keys_to_active_element(key) ⇒ Object
Port from MJSONWP
77 78 79 80 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 77 def send_keys_to_active_element(key) text = ::Selenium::WebDriver::Keys.encode(key).join('') execute :send_keys_to_active_element, {}, { value: text.split(//) } end |
#session_capabilities ⇒ Object
Port from MJSONWP
72 73 74 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 72 def session_capabilities ::Selenium::WebDriver::Remote::W3C::Capabilities.json_create execute(:get_capabilities) end |
#sessions ⇒ Object
Returns all available sessions on the Appium server instance
40 41 42 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 40 def sessions execute :get_all_sessions end |
#set_location(lat, lon, alt) ⇒ Object
For Appium No implementation for W3C webdriver module called in ‘extend DriverExtensions::HasLocation`
161 162 163 164 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 161 def set_location(lat, lon, alt) loc = { latitude: lat, longitude: lon, altitude: alt } execute :set_location, {}, { location: loc } end |
#take_element_screenshot(element) ⇒ Object
194 195 196 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 194 def take_element_screenshot(element) execute :take_element_screenshot, id: element.ref end |
#take_viewport_screenshot ⇒ Object
190 191 192 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 190 def execute_script('mobile: viewportScreenshot') end |