appium_lib_core 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -2
- data/CHANGELOG.md +19 -0
- data/appium_lib_core.gemspec +2 -2
- data/lib/appium_lib_core/common/base.rb +2 -0
- data/lib/appium_lib_core/common/base/bridge.rb +47 -19
- data/lib/appium_lib_core/common/base/driver.rb +11 -0
- data/lib/appium_lib_core/common/base/msjsonwp_bridge.rb +11 -0
- data/lib/appium_lib_core/common/base/w3c_bridge.rb +65 -0
- data/lib/appium_lib_core/common/command.rb +21 -2
- data/lib/appium_lib_core/common/device.rb +23 -0
- data/lib/appium_lib_core/driver.rb +9 -0
- data/lib/appium_lib_core/version.rb +2 -2
- data/release_notes.md +10 -0
- metadata +8 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f293c0d7c354e724d630c6bf05615648826eae78
|
4
|
+
data.tar.gz: 1b46da98cf8d8865e81774035bd0a186f25dcf4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58c4837373409a8f1d64551b737e75cfac7d552774dee51bf46fc64fd900c8e3eaa6f30137e201c73a6ef8f1bc2c8814d0b41068ddc7041518083941c360fa21
|
7
|
+
data.tar.gz: e76ae72453b6e21fd96dabb9c2525652be2319883dd326a56143ef687597670cc60efcd387b34345c00bb964d32420d1c5a12a7437237dc20d0bc98a73871f03
|
data/.rubocop.yml
CHANGED
@@ -16,11 +16,13 @@ Metrics/PerceivedComplexity:
|
|
16
16
|
Max: 8
|
17
17
|
Style/Documentation:
|
18
18
|
Enabled: false
|
19
|
-
Style/AccessorMethodName:
|
20
|
-
Enabled: false
|
21
19
|
Style/CommentedKeyword:
|
22
20
|
Enabled: false
|
23
21
|
Style/PercentLiteralDelimiters:
|
24
22
|
Enabled: false
|
23
|
+
Style/BracesAroundHashParameters:
|
24
|
+
Enabled: false
|
25
25
|
Lint/NestedMethodDefinition:
|
26
26
|
Enabled: false
|
27
|
+
Naming/AccessorMethodName:
|
28
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,25 @@ All notable changes to this project will be documented in this file.
|
|
3
3
|
|
4
4
|
## [Unreleased]
|
5
5
|
### Enhancements
|
6
|
+
|
7
|
+
### Bug fixes
|
8
|
+
|
9
|
+
### Deprecations
|
10
|
+
|
11
|
+
## [1.2.0] - 2017-12-23
|
12
|
+
### Enhancements
|
13
|
+
- Append `appium:` prefix for capabilities automatically due to W3C format.
|
14
|
+
- add take element screenshot for oss module [#33](https://github.com/appium/ruby_lib_core/pull/33)
|
15
|
+
- add w3c touch action tests and some supports for w3c [#35](https://github.com/appium/ruby_lib_core/pull/35)
|
16
|
+
- IME related
|
17
|
+
- Touch actions based on W3C spec
|
18
|
+
|
19
|
+
### Bug fixes
|
20
|
+
|
21
|
+
### Deprecations
|
22
|
+
|
23
|
+
## [1.1.0] - 2017-12-16
|
24
|
+
### Enhancements
|
6
25
|
- Add guidelines in `.github`
|
7
26
|
- session/:session_id/appium/device/keyevent [#21](https://github.com/appium/ruby_lib_core/issues/21)
|
8
27
|
|
data/appium_lib_core.gemspec
CHANGED
@@ -22,12 +22,12 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ['lib']
|
24
24
|
|
25
|
-
spec.add_runtime_dependency 'selenium-webdriver', '~> 3.
|
25
|
+
spec.add_runtime_dependency 'selenium-webdriver', '~> 3.5'
|
26
26
|
spec.add_runtime_dependency 'json', '>= 1.8'
|
27
27
|
|
28
28
|
spec.add_development_dependency 'bundler', '~> 1.14'
|
29
29
|
spec.add_development_dependency 'rake', '~> 10.0'
|
30
|
-
spec.add_development_dependency 'yard', '~> 0.9'
|
30
|
+
spec.add_development_dependency 'yard', '~> 0.9.11'
|
31
31
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
32
32
|
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
33
33
|
spec.add_development_dependency 'webmock', '~> 3.1.0'
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# The following files have selenium-webdriver related stuff.
|
2
2
|
require_relative 'base/driver'
|
3
3
|
require_relative 'base/bridge'
|
4
|
+
require_relative 'base/msjsonwp_bridge'
|
5
|
+
require_relative 'base/w3c_bridge'
|
4
6
|
require_relative 'base/capabilities'
|
5
7
|
require_relative 'base/http_default'
|
6
8
|
require_relative 'base/search_context'
|
@@ -2,6 +2,16 @@ module Appium
|
|
2
2
|
module Core
|
3
3
|
class Base
|
4
4
|
class Bridge < ::Selenium::WebDriver::Remote::Bridge
|
5
|
+
# Almost same as self.handshake in ::Selenium::WebDriver::Remote::Bridge
|
6
|
+
#
|
7
|
+
# Implements protocol handshake which:
|
8
|
+
#
|
9
|
+
# 1. Creates session with driver.
|
10
|
+
# 2. Sniffs response.
|
11
|
+
# 3. Based on the response, understands which dialect we should use.
|
12
|
+
#
|
13
|
+
# @return [CoreBridgeMJSONWP, CoreBridgeW3C]
|
14
|
+
#
|
5
15
|
def self.handshake(**opts)
|
6
16
|
desired_capabilities = opts.delete(:desired_capabilities)
|
7
17
|
|
@@ -25,36 +35,54 @@ module Appium
|
|
25
35
|
end
|
26
36
|
end
|
27
37
|
|
38
|
+
# Append `appium:` prefix for Appium following W3C spec
|
39
|
+
# https://www.w3.org/TR/webdriver/#dfn-validate-capabilities
|
40
|
+
#
|
41
|
+
# @param [::Selenium::WebDriver::Remote::W3C::Capabilities, Hash] capabilities A capability
|
42
|
+
# @return [::Selenium::WebDriver::Remote::W3C::Capabilities]
|
43
|
+
def add_appium_prefix(capabilities)
|
44
|
+
w3c_capabilities = ::Selenium::WebDriver::Remote::W3C::Capabilities.new
|
45
|
+
|
46
|
+
capabilities = capabilities.__send__(:capabilities) unless capabilities.is_a?(Hash)
|
47
|
+
capabilities.each do |name, value|
|
48
|
+
next if value.nil?
|
49
|
+
next if value.is_a?(String) && value.empty?
|
50
|
+
|
51
|
+
capability_name = name.to_s
|
52
|
+
w3c_name = appium_prefix?(capability_name, w3c_capabilities) ? name : "appium:#{capability_name}"
|
53
|
+
|
54
|
+
w3c_capabilities[w3c_name] = value
|
55
|
+
end
|
56
|
+
|
57
|
+
w3c_capabilities
|
58
|
+
end
|
59
|
+
|
28
60
|
private
|
29
61
|
|
62
|
+
APPIUM_PREFIX = 'appium:'.freeze
|
63
|
+
def appium_prefix?(capability_name, w3c_capabilities)
|
64
|
+
snake_cased_capability_names = ::Selenium::WebDriver::Remote::W3C::Capabilities::KNOWN.map(&:to_s)
|
65
|
+
camel_cased_capability_names = snake_cased_capability_names.map(&w3c_capabilities.method(:camel_case))
|
66
|
+
|
67
|
+
snake_cased_capability_names.include?(capability_name) ||
|
68
|
+
camel_cased_capability_names.include?(capability_name) ||
|
69
|
+
capability_name.start_with?(APPIUM_PREFIX)
|
70
|
+
end
|
71
|
+
|
30
72
|
# Use capabilities directory because Appium's capability is based on W3C one.
|
31
|
-
# Called in bridge.create_session(desired_capabilities)
|
73
|
+
# Called in bridge.create_session(desired_capabilities) from Parent class
|
32
74
|
def merged_capabilities(desired_capabilities)
|
75
|
+
new_caps = add_appium_prefix(desired_capabilities)
|
76
|
+
w3c_capabilities = ::Selenium::WebDriver::Remote::W3C::Capabilities.from_oss(new_caps)
|
77
|
+
|
33
78
|
{
|
34
79
|
desiredCapabilities: desired_capabilities,
|
35
80
|
capabilities: {
|
36
|
-
firstMatch: [
|
81
|
+
firstMatch: [w3c_capabilities]
|
37
82
|
}
|
38
83
|
}
|
39
84
|
end
|
40
85
|
end # class Bridge
|
41
|
-
|
42
|
-
class CoreBridgeMJSONWP < ::Selenium::WebDriver::Remote::OSS::Bridge
|
43
|
-
def commands(command)
|
44
|
-
::Appium::Core::Commands::COMMANDS_EXTEND_MJSONWP[command]
|
45
|
-
end
|
46
|
-
end # class CoreBridgeMJSONWP
|
47
|
-
|
48
|
-
class CoreBridgeW3C < ::Selenium::WebDriver::Remote::W3C::Bridge
|
49
|
-
def commands(command)
|
50
|
-
case command
|
51
|
-
when :status, :is_element_displayed
|
52
|
-
::Appium::Core::Commands::COMMANDS_EXTEND_MJSONWP[command]
|
53
|
-
else
|
54
|
-
::Appium::Core::Commands::COMMANDS_EXTEND_W3C[command]
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end # class CoreBridgeW3C
|
58
86
|
end # class Base
|
59
87
|
end # module Core
|
60
88
|
end # module Appium
|
@@ -20,10 +20,21 @@ module Appium
|
|
20
20
|
extend ::Selenium::WebDriver::DriverExtensions::HasTouchScreen
|
21
21
|
extend ::Selenium::WebDriver::DriverExtensions::HasLocation
|
22
22
|
extend ::Selenium::WebDriver::DriverExtensions::HasNetworkConnection
|
23
|
+
elsif @bridge.dialect == :w3c
|
24
|
+
# TODO: Only for Appium. Ideally, we'd like to remove the below like selenium-webdriver
|
25
|
+
extend ::Selenium::WebDriver::DriverExtensions::HasTouchScreen
|
26
|
+
extend ::Selenium::WebDriver::DriverExtensions::HasLocation
|
27
|
+
extend ::Selenium::WebDriver::DriverExtensions::HasNetworkConnection
|
23
28
|
end
|
24
29
|
super(@bridge, listener: listener)
|
25
30
|
end
|
26
31
|
|
32
|
+
# Get the dialect value
|
33
|
+
# @return [:oss|:w3c]
|
34
|
+
def dialect
|
35
|
+
@bridge.dialect
|
36
|
+
end
|
37
|
+
|
27
38
|
# Get the device window's size.
|
28
39
|
# @return [Selenium::WebDriver::Dimension]
|
29
40
|
#
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Appium
|
2
|
+
module Core
|
3
|
+
class Base
|
4
|
+
class CoreBridgeMJSONWP < ::Selenium::WebDriver::Remote::OSS::Bridge
|
5
|
+
def commands(command)
|
6
|
+
::Appium::Core::Commands::COMMANDS_EXTEND_MJSONWP[command]
|
7
|
+
end
|
8
|
+
end # class CoreBridgeMJSONWP
|
9
|
+
end # class Base
|
10
|
+
end # module Core
|
11
|
+
end # module Appium
|
@@ -0,0 +1,65 @@
|
|
1
|
+
module Appium
|
2
|
+
module Core
|
3
|
+
class Base
|
4
|
+
class CoreBridgeW3C < ::Selenium::WebDriver::Remote::W3C::Bridge
|
5
|
+
def commands(command)
|
6
|
+
::Appium::Core::Commands::COMMANDS_EXTEND_W3C[command]
|
7
|
+
end
|
8
|
+
|
9
|
+
def action(async = false)
|
10
|
+
::Selenium::WebDriver::W3CActionBuilder.new self,
|
11
|
+
::Selenium::WebDriver::Interactions.pointer(:touch, name: 'touch'),
|
12
|
+
::Selenium::WebDriver::Interactions.key('keyboard'),
|
13
|
+
async
|
14
|
+
end
|
15
|
+
alias actions action
|
16
|
+
|
17
|
+
# override
|
18
|
+
def find_element_by(how, what, parent = nil)
|
19
|
+
how, what = convert_locators(how, what)
|
20
|
+
|
21
|
+
id = if parent
|
22
|
+
execute :find_child_element, { id: parent }, { using: how, value: what }
|
23
|
+
else
|
24
|
+
execute :find_element, {}, { using: how, value: what }
|
25
|
+
end
|
26
|
+
::Selenium::WebDriver::Element.new self, element_id_from(id)
|
27
|
+
end
|
28
|
+
|
29
|
+
# override
|
30
|
+
def find_elements_by(how, what, parent = nil)
|
31
|
+
how, what = convert_locators(how, what)
|
32
|
+
|
33
|
+
ids = if parent
|
34
|
+
execute :find_child_elements, { id: parent }, { using: how, value: what }
|
35
|
+
else
|
36
|
+
execute :find_elements, {}, { using: how, value: what }
|
37
|
+
end
|
38
|
+
|
39
|
+
ids.map { |id| ::Selenium::WebDriver::Element.new self, element_id_from(id) }
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
# Don't convert locators for Appium Client
|
45
|
+
# TODO: Only for Appium. Ideally, we'd like to keep the selenium-webdriver
|
46
|
+
def convert_locators(how, what)
|
47
|
+
# case how
|
48
|
+
# when 'class name'
|
49
|
+
# how = 'css selector'
|
50
|
+
# what = ".#{escape_css(what)}"
|
51
|
+
# when 'id'
|
52
|
+
# how = 'css selector'
|
53
|
+
# what = "##{escape_css(what)}"
|
54
|
+
# when 'name'
|
55
|
+
# how = 'css selector'
|
56
|
+
# what = "*[name='#{escape_css(what)}']"
|
57
|
+
# when 'tag name'
|
58
|
+
# how = 'css selector'
|
59
|
+
# end
|
60
|
+
[how, what]
|
61
|
+
end
|
62
|
+
end # class CoreBridgeW3C
|
63
|
+
end # class Base
|
64
|
+
end # module Core
|
65
|
+
end # module Appium
|
@@ -72,8 +72,27 @@ module Appium
|
|
72
72
|
COMMANDS = {}.merge(COMMAND).merge(COMMAND_ANDROID).merge(COMMAND_IOS)
|
73
73
|
.merge(COMMAND_NO_ARG).freeze
|
74
74
|
|
75
|
-
COMMANDS_EXTEND_MJSONWP = COMMANDS.merge(
|
76
|
-
|
75
|
+
COMMANDS_EXTEND_MJSONWP = COMMANDS.merge(
|
76
|
+
{
|
77
|
+
# W3C already has.
|
78
|
+
take_element_screenshot: [:get, 'session/:session_id/element/:id/screenshot'.freeze]
|
79
|
+
}
|
80
|
+
).merge(::Appium::Core::Base::Commands::OSS).freeze
|
81
|
+
COMMANDS_EXTEND_W3C = COMMANDS.merge(
|
82
|
+
{
|
83
|
+
# ::Appium::Core::Base::Commands::OSS has the following commands and Appium also use them.
|
84
|
+
# Delegated to ::Appium::Core::Base::Commands::OSS commands
|
85
|
+
status: [:get, 'status'.freeze],
|
86
|
+
is_element_displayed: [:get, 'session/:session_id/element/:id/displayed'.freeze],
|
87
|
+
|
88
|
+
# For IME
|
89
|
+
ime_get_available_engines: [:get, 'session/:session_id/ime/available_engines'.freeze],
|
90
|
+
ime_get_active_engine: [:get, 'session/:session_id/ime/active_engine'.freeze],
|
91
|
+
ime_is_activated: [:get, 'session/:session_id/ime/activated'.freeze],
|
92
|
+
ime_deactivate: [:post, 'session/:session_id/ime/deactivate'.freeze],
|
93
|
+
ime_activate_engine: [:post, 'session/:session_id/ime/activate'.freeze]
|
94
|
+
}
|
95
|
+
).merge(::Appium::Core::Base::Commands::W3C).freeze
|
77
96
|
end
|
78
97
|
end
|
79
98
|
end
|
@@ -375,6 +375,16 @@ module Appium
|
|
375
375
|
# @driver.switch_to_default_context
|
376
376
|
#
|
377
377
|
|
378
|
+
# @!method take_element_screenshot(element, png_path)
|
379
|
+
# @param [Selenium::WebDriver::Element] element A element you'd like to take screenshot.
|
380
|
+
# @param [String] png_path A path to save the screenshot
|
381
|
+
# @return [File] Path to the screenshot.
|
382
|
+
#
|
383
|
+
# @example
|
384
|
+
#
|
385
|
+
# @driver.take_element_screenshot(element, "fine_name.png")
|
386
|
+
#
|
387
|
+
|
378
388
|
####
|
379
389
|
## class << self
|
380
390
|
####
|
@@ -454,6 +464,19 @@ module Appium
|
|
454
464
|
end
|
455
465
|
end
|
456
466
|
|
467
|
+
add_endpoint_method(:take_element_screenshot) do
|
468
|
+
def take_element_screenshot(element, png_path)
|
469
|
+
result = execute :take_element_screenshot, id: element.ref
|
470
|
+
|
471
|
+
extension = File.extname(png_path).downcase
|
472
|
+
if extension != '.png'
|
473
|
+
WebDriver.logger.warn 'name used for saved screenshot does not match file type. '\
|
474
|
+
'It should end with .png extension'
|
475
|
+
end
|
476
|
+
File.open(png_path, 'wb') { |f| f << result.unpack('m')[0] }
|
477
|
+
end
|
478
|
+
end
|
479
|
+
|
457
480
|
add_endpoint_method(:set_immediate_value) do
|
458
481
|
def set_immediate_value(element, *value)
|
459
482
|
keys = ::Selenium::WebDriver::Keys.encode(value)
|
@@ -194,6 +194,15 @@ module Appium
|
|
194
194
|
raise e.message, ::Appium::Core::Error::ServerError
|
195
195
|
end
|
196
196
|
|
197
|
+
Appium::Logger.debug(e.message)
|
198
|
+
{}
|
199
|
+
rescue Selenium::WebDriver::Error::WebDriverError => e
|
200
|
+
# FIXME: Temporary rescue until Appium support W3C's implicit wait
|
201
|
+
# https://github.com/jlipps/simple-wd-spec#set-timeouts
|
202
|
+
unless e.message.include?('Parameters were incorrect. We wanted {"required":["type","ms"]} and you sent ["implicit"]')
|
203
|
+
raise e.message, ::Appium::Core::Error::ServerError
|
204
|
+
end
|
205
|
+
|
197
206
|
Appium::Logger.debug(e.message)
|
198
207
|
{}
|
199
208
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Appium
|
2
2
|
module Core
|
3
|
-
VERSION = '1.
|
4
|
-
DATE = '2017-12-
|
3
|
+
VERSION = '1.2.0'.freeze unless defined? ::Appium::Core::VERSION
|
4
|
+
DATE = '2017-12-23'.freeze unless defined? ::Appium::Core::DATE
|
5
5
|
end
|
6
6
|
end
|
data/release_notes.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
#### v1.2.0 2017-12-23
|
2
|
+
|
3
|
+
- [28f937b](https://github.com/appium/ruby_lib_core/commit/28f937bbaf15a7d99b8870b5b1ec1f063414ea3b) Release 1.2.0
|
4
|
+
- [27c1475](https://github.com/appium/ruby_lib_core/commit/27c1475d4cce8271ddc8409c14fb7bdfa1ff6834) update changelog
|
5
|
+
- [82e2526](https://github.com/appium/ruby_lib_core/commit/82e2526de95b05e8a49872e0b69835e99acc66e5) add w3c touch action tests and some supports for w3c (#35)
|
6
|
+
- [415b908](https://github.com/appium/ruby_lib_core/commit/415b90827105e84234e52f5faedde02357083b66) add take element screenshot for oss (#33)
|
7
|
+
- [9dd9c83](https://github.com/appium/ruby_lib_core/commit/9dd9c83271483727e4429e7e6602480da214e118) add adding appium-prefix for W3C format (#34)
|
8
|
+
- [cb94184](https://github.com/appium/ruby_lib_core/commit/cb94184854a9977a08f15a44843778314470a73a) update changelog
|
9
|
+
|
10
|
+
|
1
11
|
#### v1.1.0 2017-12-16
|
2
12
|
|
3
13
|
- [29b36af](https://github.com/appium/ruby_lib_core/commit/29b36af7af280308f7cfc2ee7ffa1738085e0306) Release 1.1.0
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appium_lib_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuaki MATSUO
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '3.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 3.4.1
|
19
|
+
version: '3.5'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '3.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 3.4.1
|
26
|
+
version: '3.5'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: json
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,14 +72,14 @@ dependencies:
|
|
78
72
|
requirements:
|
79
73
|
- - "~>"
|
80
74
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
75
|
+
version: 0.9.11
|
82
76
|
type: :development
|
83
77
|
prerelease: false
|
84
78
|
version_requirements: !ruby/object:Gem::Requirement
|
85
79
|
requirements:
|
86
80
|
- - "~>"
|
87
81
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
82
|
+
version: 0.9.11
|
89
83
|
- !ruby/object:Gem::Dependency
|
90
84
|
name: minitest
|
91
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -214,7 +208,9 @@ files:
|
|
214
208
|
- lib/appium_lib_core/common/base/command.rb
|
215
209
|
- lib/appium_lib_core/common/base/driver.rb
|
216
210
|
- lib/appium_lib_core/common/base/http_default.rb
|
211
|
+
- lib/appium_lib_core/common/base/msjsonwp_bridge.rb
|
217
212
|
- lib/appium_lib_core/common/base/search_context.rb
|
213
|
+
- lib/appium_lib_core/common/base/w3c_bridge.rb
|
218
214
|
- lib/appium_lib_core/common/base/wait.rb
|
219
215
|
- lib/appium_lib_core/common/command.rb
|
220
216
|
- lib/appium_lib_core/common/device.rb
|