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::ExecuteDriver, Device::FileManagement, Device::ImageComparison, Device::ImeActions, Device::KeyEvent, Device::Keyboard, Device::Orientation, 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 Attribute Summary collapse
-
#available_commands ⇒ Object
readonly
Returns the value of attribute available_commands.
Instance Method Summary collapse
-
#action(async = false) ⇒ Object
Perform touch actions for W3C module.
-
#add_command(method:, url:, name:, &block) ⇒ Object
command for Appium 2.0.
-
#available_log_types ⇒ Object
logs.
- #commands(command) ⇒ Object
-
#convert_to_element(id) ⇒ ::Selenium::WebDriver::Element
For Appium.
-
#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.
-
#initialize(capabilities, session_id, **opts) ⇒ W3C
constructor
A new instance of W3C.
-
#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.
-
#log_event(vendor, event) ⇒ Object
For Appium.
-
#log_events(type = nil) ⇒ Object
For Appium.
-
#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 = 0.0, speed: nil, satellites: nil) ⇒ Object
For Appium No implementation for W3C webdriver module.
- #status ⇒ Object
- #take_element_screenshot(element) ⇒ Object
- #take_viewport_screenshot ⇒ Object
Methods included from Device::Orientation
#screen_orientation, #screen_orientation=
Methods included from Device::ExecuteDriver
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
Constructor Details
#initialize(capabilities, session_id, **opts) ⇒ W3C
Returns a new instance of W3C.
39 40 41 42 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 39 def initialize(capabilities, session_id, **opts) @available_commands = ::Appium::Core::Commands::W3C::COMMANDS.dup super(capabilities, session_id, **opts) end |
Instance Attribute Details
#available_commands ⇒ Object (readonly)
Returns the value of attribute available_commands.
37 38 39 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 37 def available_commands @available_commands end |
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.
80 81 82 83 84 85 86 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 80 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 |
#add_command(method:, url:, name:, &block) ⇒ Object
command for Appium 2.0.
49 50 51 52 53 54 55 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 49 def add_command(method:, url:, name:, &block) raise ::Appium::Core::Error::ArgumentError, "#{name} is already defined" if @available_commands.key? name @available_commands[name] = [method, url] ::Appium::Core::Device.add_endpoint_method name, &block end |
#available_log_types ⇒ Object
logs
For Appium No implementation for W3C webdriver module
201 202 203 204 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 201 def available_log_types types = execute :get_available_log_types Array(types).map(&:to_sym) end |
#commands(command) ⇒ Object
44 45 46 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 44 def commands(command) @available_commands[command] end |
#convert_to_element(id) ⇒ ::Selenium::WebDriver::Element
For Appium
161 162 163 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 161 def convert_to_element(id) ::Selenium::WebDriver::Element.new self, element_id_from(id) end |
#element_attribute(element, name) ⇒ Object
For Appium override
125 126 127 128 129 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 125 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
116 117 118 119 120 121 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 116 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
133 134 135 136 137 138 139 140 141 142 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 133 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
146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 146 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
89 90 91 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 89 def get_timeouts execute :get_timeouts end |
#location ⇒ Object
For Appium No implementation for W3C webdriver module called in ‘extend DriverExtensions::HasLocation’
182 183 184 185 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 182 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
208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 208 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 |
#log_event(vendor, event) ⇒ Object
For Appium
221 222 223 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 221 def log_event(vendor, event) execute :post_log_event, {}, { vendor: vendor, event: event } end |
#log_events(type = nil) ⇒ Object
For Appium
226 227 228 229 230 231 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 226 def log_events(type = nil) args = {} args['type'] = type unless type.nil? execute :get_log_events, {}, args end |
#network_connection ⇒ Object
For Appium override called in ‘extend DriverExtensions::HasNetworkConnection’
168 169 170 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 168 def network_connection execute :get_network_connection end |
#network_connection=(type) ⇒ Object
For Appium override called in ‘extend DriverExtensions::HasNetworkConnection’
175 176 177 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 175 def network_connection=(type) execute :set_network_connection, {}, { parameters: { type: type } } end |
#page_source ⇒ Object
For Appium override
106 107 108 109 110 111 112 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 106 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
99 100 101 102 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 99 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
94 95 96 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 94 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
58 59 60 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 58 def sessions execute :get_all_sessions end |
#set_location(lat, lon, alt = 0.0, speed: nil, satellites: nil) ⇒ Object
For Appium No implementation for W3C webdriver module
189 190 191 192 193 194 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 189 def set_location(lat, lon, alt = 0.0, speed: nil, satellites: nil) loc = { latitude: lat, longitude: lon, altitude: alt } loc[:speed] = speed unless speed.nil? loc[:satellites] = satellites unless satellites.nil? execute :set_location, {}, { location: loc } end |
#status ⇒ Object
62 63 64 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 62 def status execute :status end |
#take_element_screenshot(element) ⇒ Object
237 238 239 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 237 def take_element_screenshot(element) execute :take_element_screenshot, id: element.ref end |
#take_viewport_screenshot ⇒ Object
233 234 235 |
# File 'lib/appium_lib_core/common/base/bridge/w3c.rb', line 233 def execute_script('mobile: viewportScreenshot') end |