Class: Appium::Core::Base::Bridge
- Inherits:
-
Selenium::WebDriver::Remote::Bridge
- Object
- Selenium::WebDriver::Remote::Bridge
- Appium::Core::Base::Bridge
- Defined in:
- lib/appium_lib_core/common/base/bridge.rb
Class Method Summary collapse
-
.handshake(**opts) ⇒ CoreBridgeMJSONWP, CoreBridgeW3C
Almost same as self.handshake in ::Selenium::WebDriver::Remote::Bridge.
Instance Method Summary collapse
-
#add_appium_prefix(capabilities) ⇒ ::Selenium::WebDriver::Remote::W3C::Capabilities
Append ‘appium:` prefix for Appium following W3C spec www.w3.org/TR/webdriver/#dfn-validate-capabilities.
Class Method Details
.handshake(**opts) ⇒ CoreBridgeMJSONWP, CoreBridgeW3C
Almost same as self.handshake in ::Selenium::WebDriver::Remote::Bridge
Implements protocol handshake which:
1. Creates session with driver.
2. Sniffs response.
3. Based on the response, understands which dialect we should use.
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/appium_lib_core/common/base/bridge.rb', line 15 def self.handshake(**opts) desired_capabilities = opts.delete(:desired_capabilities) if desired_capabilities.is_a?(Symbol) unless Remote::Capabilities.respond_to?(desired_capabilities) raise Error::WebDriverError, "invalid desired capability: #{desired_capabilities.inspect}" end desired_capabilities = Remote::Capabilities.__send__(desired_capabilities) end bridge = new(opts) capabilities = bridge.create_session(desired_capabilities) case bridge.dialect when :oss # for MJSONWP CoreBridgeMJSONWP.new(capabilities, bridge.session_id, opts) when :w3c CoreBridgeW3C.new(capabilities, bridge.session_id, opts) else raise CoreError, 'cannot understand dialect' end end |
Instance Method Details
#add_appium_prefix(capabilities) ⇒ ::Selenium::WebDriver::Remote::W3C::Capabilities
Append ‘appium:` prefix for Appium following W3C spec www.w3.org/TR/webdriver/#dfn-validate-capabilities
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/appium_lib_core/common/base/bridge.rb', line 43 def add_appium_prefix(capabilities) w3c_capabilities = ::Selenium::WebDriver::Remote::W3C::Capabilities.new capabilities = capabilities.__send__(:capabilities) unless capabilities.is_a?(Hash) capabilities.each do |name, value| next if value.nil? next if value.is_a?(String) && value.empty? capability_name = name.to_s w3c_name = appium_prefix?(capability_name, w3c_capabilities) ? name : "appium:#{capability_name}" w3c_capabilities[w3c_name] = value end w3c_capabilities end |