appium_lib_core 6.2.1 → 6.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +23 -0
- data/appium_lib_core.gemspec +2 -2
- data/lib/appium_lib_core/common/base/driver.rb +14 -4
- data/lib/appium_lib_core/common/base/http_default.rb +1 -0
- data/lib/appium_lib_core/common/base/screenshot.rb +2 -2
- data/lib/appium_lib_core/driver.rb +18 -7
- data/lib/appium_lib_core/element.rb +1 -1
- data/lib/appium_lib_core/support/event_firing_bridge.rb +57 -0
- data/lib/appium_lib_core/version.rb +2 -2
- data/lib/appium_lib_core.rb +1 -0
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3047299ce31d2eac69a3d62e52e2fa73ca02710e0f7c7d5d039e06e838822386
|
4
|
+
data.tar.gz: 2776a7ddebb3cc71a0334559c663b351c1f5f4dde223b313d3b581b91b83b402
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfd4ad06897b4402556701ff40bb3722f4c5b8dd3b4704577ba7790c28f6e329d5aab83abbdea906c309897b9c95f87d61f6845e7eb8ef4f569105a82d816164
|
7
|
+
data.tar.gz: 6076c5d10ee6010eea91a78ff98aaa18187ef6c7c1519e024bba8b7207f4892311cea7ffcac0b081a5ebb39945d42eae46d1ca463fa581f6450d3e6b53f29731
|
data/CHANGELOG.md
CHANGED
@@ -10,6 +10,17 @@ Read `release_notes.md` for commit level details.
|
|
10
10
|
|
11
11
|
### Deprecations
|
12
12
|
|
13
|
+
## [6.4.0] - 2023-04-30
|
14
|
+
|
15
|
+
### Enhancements
|
16
|
+
- Append `selenium-webdriver` `4.9` support
|
17
|
+
|
18
|
+
## [6.3.0] - 2023-03-14
|
19
|
+
|
20
|
+
### Enhancements
|
21
|
+
- Support custom listener
|
22
|
+
- e.g. A listener named `CustomListener` which inherits `::Selenium::WebDriver::Support::AbstractEventListener` can set as `appium_lib: { listener: CustomListener.new}` capability
|
23
|
+
|
13
24
|
## [6.2.1] - 2023-03-09
|
14
25
|
|
15
26
|
### Enhancements
|
data/README.md
CHANGED
@@ -154,6 +154,29 @@ attached_driver.page_source
|
|
154
154
|
Read [Appium/Core/Driver](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Driver) to catch up with available capabilities.
|
155
155
|
Capabilities affect only ruby_lib is [Appium/Core/Options](https://www.rubydoc.info/github/appium/ruby_lib_core/Appium/Core/Options).
|
156
156
|
|
157
|
+
|
158
|
+
### Gives custom listener
|
159
|
+
|
160
|
+
An example to define a customer listener with [Selenium::WebDriver::Support::AbstractEventListener](https://www.selenium.dev/selenium/docs/api/rb/Selenium/WebDriver/Support/AbstractEventListener.html)
|
161
|
+
|
162
|
+
```ruby
|
163
|
+
class CustomListener < ::Selenium::WebDriver::Support::AbstractEventListener
|
164
|
+
// something
|
165
|
+
end
|
166
|
+
capabilities: {
|
167
|
+
platformName: :ios,
|
168
|
+
platformVersion: '11.0',
|
169
|
+
deviceName: 'iPhone Simulator',
|
170
|
+
automationName: 'XCUITest',
|
171
|
+
app: '/path/to/MyiOS.app'
|
172
|
+
},
|
173
|
+
appium_lib: {
|
174
|
+
listener: CustomListener.new
|
175
|
+
}
|
176
|
+
@core = Appium::Core.for capabilities: capabilities, appium_lib: appium_lib
|
177
|
+
@core.start_driver
|
178
|
+
```
|
179
|
+
|
157
180
|
# Development
|
158
181
|
- Demo app
|
159
182
|
- https://android.googlesource.com/platform/development/+/master/samples/ApiDemos
|
data/appium_lib_core.gemspec
CHANGED
@@ -22,7 +22,7 @@ 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', '~> 4.2', '< 4.
|
25
|
+
spec.add_runtime_dependency 'selenium-webdriver', '~> 4.2', '< 4.10'
|
26
26
|
spec.add_runtime_dependency 'faye-websocket', '~> 0.11.0'
|
27
27
|
|
28
28
|
spec.add_development_dependency 'rake', '~> 13.0'
|
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
31
31
|
spec.add_development_dependency 'minitest-reporters', '~> 1.1'
|
32
32
|
spec.add_development_dependency 'webmock', '~> 3.18.1'
|
33
|
-
spec.add_development_dependency 'rubocop', '1.
|
33
|
+
spec.add_development_dependency 'rubocop', '1.50.2'
|
34
34
|
spec.add_development_dependency 'appium_thor', '~> 1.0'
|
35
35
|
spec.add_development_dependency 'parallel_tests'
|
36
36
|
spec.add_development_dependency 'simplecov'
|
@@ -44,16 +44,26 @@ module Appium
|
|
44
44
|
# Do not use this for general use. Used by flutter driver to get bridge for creating a new element
|
45
45
|
attr_reader :bridge
|
46
46
|
|
47
|
-
|
47
|
+
# override
|
48
|
+
def initialize(bridge: nil, listener: nil, **opts) # rubocop:disable Lint/MissingSuper
|
49
|
+
original_opts = opts.dup
|
48
50
|
|
49
|
-
def initialize(bridge: nil, listener: nil, **opts)
|
50
51
|
# For ::Appium::Core::Waitable
|
51
52
|
@wait_timeout = opts.delete(:wait_timeout)
|
52
53
|
@wait_interval = opts.delete(:wait_interval)
|
53
54
|
|
54
|
-
|
55
|
+
# Selenium WebDriver attributes
|
56
|
+
@devtools = nil
|
57
|
+
@bidi = nil
|
58
|
+
|
59
|
+
# in the selenium webdriver as well
|
60
|
+
bridge ||= create_bridge(**opts)
|
61
|
+
add_extensions(bridge.browser)
|
62
|
+
@bridge = listener ? ::Appium::Support::EventFiringBridge.new(bridge, listener, **original_opts) : bridge
|
55
63
|
end
|
56
64
|
|
65
|
+
private
|
66
|
+
|
57
67
|
# Create a proper bridge instance.
|
58
68
|
#
|
59
69
|
# @return [::Appium::Core::Base::Bridge]
|
@@ -1069,7 +1079,7 @@ module Appium
|
|
1069
1079
|
#
|
1070
1080
|
# @param [String] img_path A path to a partial image you'd like to find
|
1071
1081
|
#
|
1072
|
-
# @return [Array
|
1082
|
+
# @return [Array<::Appium::Core::Element>]
|
1073
1083
|
#
|
1074
1084
|
# @example
|
1075
1085
|
#
|
@@ -24,7 +24,7 @@ module Appium
|
|
24
24
|
def save_screenshot(png_path)
|
25
25
|
extension = File.extname(png_path).downcase
|
26
26
|
if extension != '.png'
|
27
|
-
::Appium::Logger.warn 'name used for saved screenshot does not match file type. '\
|
27
|
+
::Appium::Logger.warn 'name used for saved screenshot does not match file type. ' \
|
28
28
|
'It should end with .png extension'
|
29
29
|
end
|
30
30
|
File.open(png_path, 'wb') { |f| f << screenshot_as(:png) }
|
@@ -103,7 +103,7 @@ module Appium
|
|
103
103
|
def save_viewport_screenshot(png_path)
|
104
104
|
extension = File.extname(png_path).downcase
|
105
105
|
if extension != '.png'
|
106
|
-
::Appium::Logger.warn 'name used for saved screenshot does not match file type. '\
|
106
|
+
::Appium::Logger.warn 'name used for saved screenshot does not match file type. ' \
|
107
107
|
'It should end with .png extension'
|
108
108
|
end
|
109
109
|
viewport_screenshot_encode64 = bridge.viewport_screenshot
|
@@ -276,6 +276,23 @@ module Appium
|
|
276
276
|
# @core = Appium::Core.for(opts) # create a core driver with 'opts' and extend methods into 'self'
|
277
277
|
# @core.start_driver # start driver with 'url'. Connect to 'http://custom-host:8080/wd/hub.com'
|
278
278
|
#
|
279
|
+
# # With a custom listener
|
280
|
+
# class CustomListener < ::Selenium::WebDriver::Support::AbstractEventListener
|
281
|
+
# // something
|
282
|
+
# end
|
283
|
+
# capabilities: {
|
284
|
+
# platformName: :ios,
|
285
|
+
# platformVersion: '11.0',
|
286
|
+
# deviceName: 'iPhone Simulator',
|
287
|
+
# automationName: 'XCUITest',
|
288
|
+
# app: '/path/to/MyiOS.app'
|
289
|
+
# },
|
290
|
+
# appium_lib: {
|
291
|
+
# listener: CustomListener.new,
|
292
|
+
# }
|
293
|
+
# @core = Appium::Core.for capabilities: capabilities, appium_lib: appium_lib
|
294
|
+
# @core.start_driver
|
295
|
+
#
|
279
296
|
def self.for(opts = {})
|
280
297
|
new.setup_for_new_session(opts)
|
281
298
|
end
|
@@ -488,13 +505,7 @@ module Appium
|
|
488
505
|
end
|
489
506
|
|
490
507
|
def get_http_client(http_client: nil, open_timeout: nil, read_timeout: nil)
|
491
|
-
|
492
|
-
|
493
|
-
# open_timeout and read_timeout are explicit wait.
|
494
|
-
client.open_timeout = open_timeout if open_timeout
|
495
|
-
client.read_timeout = read_timeout if read_timeout
|
496
|
-
|
497
|
-
client
|
508
|
+
http_client || Appium::Core::Base::Http::Default.new(open_timeout: open_timeout, read_timeout: read_timeout)
|
498
509
|
end
|
499
510
|
|
500
511
|
# Ignore setting default wait if the target driver has no implementation
|
@@ -152,7 +152,7 @@ module Appium
|
|
152
152
|
def save_screenshot(png_path)
|
153
153
|
extension = File.extname(png_path).downcase
|
154
154
|
if extension != '.png'
|
155
|
-
::Appium::Logger.warn 'name used for saved screenshot does not match file type. '\
|
155
|
+
::Appium::Logger.warn 'name used for saved screenshot does not match file type. ' \
|
156
156
|
'It should end with .png extension'
|
157
157
|
end
|
158
158
|
File.open(png_path, 'wb') { |f| f << screenshot_as(:png) }
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Appium
|
16
|
+
module Support
|
17
|
+
class EventFiringBridge < ::Selenium::WebDriver::Support::EventFiringBridge
|
18
|
+
# This module inherits ::Selenium::WebDriver::Support::EventFiringBridge
|
19
|
+
# to provide customer listener availability.
|
20
|
+
# https://github.com/SeleniumHQ/selenium/blob/trunk/rb/lib/selenium/webdriver/support/event_firing_bridge.rb#L79
|
21
|
+
|
22
|
+
def initialize(delegate, listener, **opts)
|
23
|
+
@appium_options = opts
|
24
|
+
super delegate, listener
|
25
|
+
end
|
26
|
+
|
27
|
+
def find_element_by(how, what, parent = nil)
|
28
|
+
e = dispatch(:find, how, what, driver) do
|
29
|
+
@delegate.find_element_by how, what, parent
|
30
|
+
end
|
31
|
+
|
32
|
+
::Appium::Core::Element.new self, e.ref.last
|
33
|
+
end
|
34
|
+
|
35
|
+
def find_elements_by(how, what, parent = nil)
|
36
|
+
es = dispatch(:find, how, what, driver) do
|
37
|
+
@delegate.find_elements_by(how, what, parent)
|
38
|
+
end
|
39
|
+
|
40
|
+
es.map { |e| ::Appium::Core::Element.new self, e.ref.last }
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def create_element(ref)
|
46
|
+
::Appium::Core::Element.new @delegate, ref
|
47
|
+
end
|
48
|
+
|
49
|
+
def driver
|
50
|
+
# To not gives the listener
|
51
|
+
@appium_options.delete(:listener)
|
52
|
+
|
53
|
+
@driver ||= ::Appium::Core::Base::Driver.new(bridge: self, listener: nil, **@appium_options)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
module Appium
|
16
16
|
module Core
|
17
|
-
VERSION = '6.
|
18
|
-
DATE = '2023-
|
17
|
+
VERSION = '6.4.0' unless defined? ::Appium::Core::VERSION
|
18
|
+
DATE = '2023-04-30' unless defined? ::Appium::Core::DATE
|
19
19
|
end
|
20
20
|
end
|
data/lib/appium_lib_core.rb
CHANGED
@@ -19,6 +19,7 @@ require_relative 'appium_lib_core/common'
|
|
19
19
|
require_relative 'appium_lib_core/driver'
|
20
20
|
require_relative 'appium_lib_core/device'
|
21
21
|
require_relative 'appium_lib_core/element'
|
22
|
+
require_relative 'appium_lib_core/support/event_firing_bridge'
|
22
23
|
|
23
24
|
module Appium
|
24
25
|
# @private
|
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: 6.
|
4
|
+
version: 6.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuaki MATSUO
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '4.2'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '4.
|
22
|
+
version: '4.10'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '4.2'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '4.
|
32
|
+
version: '4.10'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: faye-websocket
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -120,14 +120,14 @@ dependencies:
|
|
120
120
|
requirements:
|
121
121
|
- - '='
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: 1.
|
123
|
+
version: 1.50.2
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - '='
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: 1.
|
130
|
+
version: 1.50.2
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: appium_thor
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -259,6 +259,7 @@ files:
|
|
259
259
|
- lib/appium_lib_core/mac2/bridge.rb
|
260
260
|
- lib/appium_lib_core/mac2/device.rb
|
261
261
|
- lib/appium_lib_core/mac2/device/screen.rb
|
262
|
+
- lib/appium_lib_core/support/event_firing_bridge.rb
|
262
263
|
- lib/appium_lib_core/version.rb
|
263
264
|
- lib/appium_lib_core/windows.rb
|
264
265
|
- lib/appium_lib_core/windows/bridge.rb
|
@@ -269,7 +270,7 @@ homepage: https://github.com/appium/ruby_lib_core/
|
|
269
270
|
licenses:
|
270
271
|
- Apache-2.0
|
271
272
|
metadata: {}
|
272
|
-
post_install_message:
|
273
|
+
post_install_message:
|
273
274
|
rdoc_options: []
|
274
275
|
require_paths:
|
275
276
|
- lib
|
@@ -284,8 +285,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
285
|
- !ruby/object:Gem::Version
|
285
286
|
version: '0'
|
286
287
|
requirements: []
|
287
|
-
rubygems_version: 3.
|
288
|
-
signing_key:
|
288
|
+
rubygems_version: 3.3.3
|
289
|
+
signing_key:
|
289
290
|
specification_version: 4
|
290
291
|
summary: Minimal Ruby library for Appium.
|
291
292
|
test_files: []
|