selenium-webdriver 4.6.0 → 4.7.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/CHANGES +19 -1
- data/LICENSE +0 -0
- data/NOTICE +0 -0
- data/bin/linux/selenium-manager +0 -0
- data/bin/macos/selenium-manager +0 -0
- data/bin/windows/selenium-manager.exe +0 -0
- data/lib/selenium/server.rb +5 -8
- data/lib/selenium/webdriver/atoms/findElements.js +0 -0
- data/lib/selenium/webdriver/atoms/getAttribute.js +0 -0
- data/lib/selenium/webdriver/atoms/isDisplayed.js +0 -0
- data/lib/selenium/webdriver/atoms/mutationListener.js +0 -0
- data/lib/selenium/webdriver/common/child_process.rb +126 -0
- data/lib/selenium/webdriver/common/platform.rb +4 -0
- data/lib/selenium/webdriver/common/selenium_manager.rb +11 -6
- data/lib/selenium/webdriver/common/service.rb +1 -1
- data/lib/selenium/webdriver/common/service_manager.rb +1 -9
- data/lib/selenium/webdriver/common/socket_lock.rb +1 -2
- data/lib/selenium/webdriver/common/websocket_connection.rb +9 -0
- data/lib/selenium/webdriver/common.rb +1 -0
- data/lib/selenium/webdriver/safari/options.rb +1 -1
- data/lib/selenium/webdriver/support/nightly_version_generator.rb +60 -0
- data/lib/selenium/webdriver/support/select.rb +1 -1
- data/lib/selenium/webdriver/version.rb +1 -1
- data/lib/selenium/webdriver.rb +0 -1
- data/selenium-webdriver.gemspec +1 -3
- metadata +9 -41
- data/lib/selenium/webdriver/support/cdp/domain.rb.erb +0 -63
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0e30bfb529c5499329e02fe9a1e511b5bf0d358444f66a2afd45e98783e6b3d1
|
4
|
+
data.tar.gz: 10b0e20b9ad667fe4b872c7721926009065af0807da3f156f99d76ca42531e5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 967e493c8a785e817e9a117da8d642d1b9529ad13fa7be53dc7b3305cae9bf7031fc5497c84a0aeb9551aa8bf0d5325479362f8180c7e683c6a6a4e06fbb7b2f
|
7
|
+
data.tar.gz: a5d37e0f131b8004141b91c1b3a70412c16a65c7615bae1fee3f5a112bce45471211fe2507a356c1bcd8f01c43b49a44f3da31430fd01f0f964aaaf3ca757d9d
|
data/CHANGES
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
4.7.0 (2022-12-01)
|
2
|
+
=========================
|
3
|
+
BiDi:
|
4
|
+
* Released selenium-devtools 0.108.0 (supports CDP v85, v106, v107, v108)
|
5
|
+
* Fix bug with socket stability
|
6
|
+
|
7
|
+
Ruby:
|
8
|
+
* Remove dependency on ChildProcess gem in favor of native Process.spawn (#11251)
|
9
|
+
* Add support for Selenium Manager to work with IE Driver
|
10
|
+
* Improve error handling for Selenium Manager
|
11
|
+
|
12
|
+
Safari:
|
13
|
+
* Fix bug preventing Safari Options from being used with Safari Technology Preview
|
14
|
+
|
15
|
+
4.6.1 (2022-11-04)
|
16
|
+
=========================
|
17
|
+
Ruby:
|
18
|
+
* fix bug preventing selenium-manager from being executable by default
|
19
|
+
|
1
20
|
4.6.0 (2022-11-04)
|
2
21
|
=========================
|
3
22
|
BiDi:
|
@@ -10,7 +29,6 @@ Ruby:
|
|
10
29
|
* Make sure selenium-manager is packed into gem
|
11
30
|
* Fix platform list in #scroll_by guard
|
12
31
|
|
13
|
-
|
14
32
|
4.5.0 (2022-09-28)
|
15
33
|
=========================
|
16
34
|
|
data/LICENSE
CHANGED
File without changes
|
data/NOTICE
CHANGED
File without changes
|
data/bin/linux/selenium-manager
CHANGED
Binary file
|
data/bin/macos/selenium-manager
CHANGED
Binary file
|
Binary file
|
data/lib/selenium/server.rb
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
# specific language governing permissions and limitations
|
18
18
|
# under the License.
|
19
19
|
|
20
|
-
require '
|
20
|
+
require 'selenium/webdriver/common/child_process'
|
21
21
|
require 'selenium/webdriver/common/socket_poller'
|
22
22
|
require 'net/http'
|
23
23
|
|
@@ -237,7 +237,7 @@ module Selenium
|
|
237
237
|
|
238
238
|
begin
|
239
239
|
@process.poll_for_exit(5)
|
240
|
-
rescue ChildProcess::TimeoutError
|
240
|
+
rescue WebDriver::ChildProcess::TimeoutError
|
241
241
|
@process.stop
|
242
242
|
end
|
243
243
|
rescue Errno::ECHILD
|
@@ -252,16 +252,13 @@ module Selenium
|
|
252
252
|
properties = @additional_args.dup - @additional_args.delete_if { |arg| arg[/^-D/] }
|
253
253
|
args = ['-jar', @jar, @role, '--port', @port.to_s]
|
254
254
|
server_command = ['java'] + properties + args + @additional_args
|
255
|
-
cp = ChildProcess.build(*server_command)
|
255
|
+
cp = WebDriver::ChildProcess.build(*server_command)
|
256
256
|
WebDriver.logger.debug("Executing Process #{server_command}")
|
257
257
|
|
258
|
-
io = cp.io
|
259
|
-
|
260
258
|
if @log.is_a?(String)
|
261
|
-
|
262
|
-
io.stdout = io.stderr = @log_file
|
259
|
+
cp.io = @log
|
263
260
|
elsif @log
|
264
|
-
io
|
261
|
+
cp.io = :out
|
265
262
|
end
|
266
263
|
|
267
264
|
cp.detach = @background
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
4
|
+
# or more contributor license agreements. See the NOTICE file
|
5
|
+
# distributed with this work for additional information
|
6
|
+
# regarding copyright ownership. The SFC licenses this file
|
7
|
+
# to you under the Apache License, Version 2.0 (the
|
8
|
+
# "License"); you may not use this file except in compliance
|
9
|
+
# with the License. You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing,
|
14
|
+
# software distributed under the License is distributed on an
|
15
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
16
|
+
# KIND, either express or implied. See the License for the
|
17
|
+
# specific language governing permissions and limitations
|
18
|
+
# under the License.
|
19
|
+
|
20
|
+
module Selenium
|
21
|
+
module WebDriver
|
22
|
+
|
23
|
+
#
|
24
|
+
# @api private
|
25
|
+
#
|
26
|
+
|
27
|
+
class ChildProcess
|
28
|
+
TimeoutError = Class.new(StandardError)
|
29
|
+
|
30
|
+
SIGTERM = 'TERM'
|
31
|
+
SIGKILL = 'KILL'
|
32
|
+
|
33
|
+
POLL_INTERVAL = 0.1
|
34
|
+
|
35
|
+
attr_accessor :detach
|
36
|
+
attr_writer :io
|
37
|
+
|
38
|
+
def self.build(*command)
|
39
|
+
new(*command)
|
40
|
+
end
|
41
|
+
|
42
|
+
def initialize(*command)
|
43
|
+
@command = command
|
44
|
+
@detach = false
|
45
|
+
@pid = nil
|
46
|
+
@status = nil
|
47
|
+
end
|
48
|
+
|
49
|
+
def io
|
50
|
+
@io ||= Platform.null_device
|
51
|
+
end
|
52
|
+
|
53
|
+
def start
|
54
|
+
options = {%i[out err] => io}
|
55
|
+
options[:pgroup] = true unless Platform.windows? # NOTE: this is a bug only in Windows 7
|
56
|
+
|
57
|
+
WebDriver.logger.debug("Starting process: #{@command} with #{options}")
|
58
|
+
@pid = Process.spawn(*@command, options)
|
59
|
+
WebDriver.logger.debug(" -> pid: #{@pid}")
|
60
|
+
|
61
|
+
Process.detach(@pid) if detach
|
62
|
+
end
|
63
|
+
|
64
|
+
def stop(timeout = 3)
|
65
|
+
return unless @pid
|
66
|
+
return if exited?
|
67
|
+
|
68
|
+
WebDriver.logger.debug("Sending TERM to process: #{@pid}")
|
69
|
+
terminate(@pid)
|
70
|
+
poll_for_exit(timeout)
|
71
|
+
|
72
|
+
WebDriver.logger.debug(" -> stopped #{@pid}")
|
73
|
+
rescue TimeoutError, Errno::EINVAL
|
74
|
+
WebDriver.logger.debug(" -> sending KILL to process: #{@pid}")
|
75
|
+
kill(@pid)
|
76
|
+
wait
|
77
|
+
WebDriver.logger.debug(" -> killed #{@pid}")
|
78
|
+
end
|
79
|
+
|
80
|
+
def alive?
|
81
|
+
@pid && !exited?
|
82
|
+
end
|
83
|
+
|
84
|
+
def exited?
|
85
|
+
return unless @pid
|
86
|
+
|
87
|
+
WebDriver.logger.debug("Checking if #{@pid} is exited:")
|
88
|
+
_, @status = Process.waitpid2(@pid, Process::WNOHANG | Process::WUNTRACED) if @status.nil?
|
89
|
+
return if @status.nil?
|
90
|
+
|
91
|
+
exit_code = @status.exitstatus || @status.termsig
|
92
|
+
WebDriver.logger.debug(" -> exit code is #{exit_code.inspect}")
|
93
|
+
|
94
|
+
!!exit_code
|
95
|
+
end
|
96
|
+
|
97
|
+
def poll_for_exit(timeout)
|
98
|
+
WebDriver.logger.debug("Polling #{timeout} seconds for exit of #{@pid}")
|
99
|
+
|
100
|
+
end_time = Time.now + timeout
|
101
|
+
sleep POLL_INTERVAL until exited? || Time.now > end_time
|
102
|
+
|
103
|
+
raise TimeoutError, " -> #{@pid} still alive after #{timeout} seconds" unless exited?
|
104
|
+
end
|
105
|
+
|
106
|
+
def wait
|
107
|
+
return if exited?
|
108
|
+
|
109
|
+
_, @status = Process.waitpid2(@pid)
|
110
|
+
end
|
111
|
+
|
112
|
+
private
|
113
|
+
|
114
|
+
def terminate(pid)
|
115
|
+
Process.kill(SIGTERM, pid)
|
116
|
+
end
|
117
|
+
|
118
|
+
def kill(pid)
|
119
|
+
Process.kill(SIGKILL, pid)
|
120
|
+
rescue Errno::ECHILD, Errno::ESRCH
|
121
|
+
# already dead
|
122
|
+
end
|
123
|
+
|
124
|
+
end # ChildProcess
|
125
|
+
end # WebDriver
|
126
|
+
end # Selenium
|
@@ -17,6 +17,8 @@
|
|
17
17
|
# specific language governing permissions and limitations
|
18
18
|
# under the License.
|
19
19
|
|
20
|
+
require 'open3'
|
21
|
+
|
20
22
|
module Selenium
|
21
23
|
module WebDriver
|
22
24
|
#
|
@@ -32,12 +34,12 @@ module Selenium
|
|
32
34
|
# @return [String] the path to the correct driver.
|
33
35
|
def driver_path(driver_name)
|
34
36
|
@driver_path ||= begin
|
35
|
-
unless %w[chromedriver geckodriver msedgedriver].include?(driver_name)
|
37
|
+
unless %w[chromedriver geckodriver msedgedriver IEDriverServer.exe].include?(driver_name)
|
36
38
|
msg = "Unable to locate driver with name: #{driver_name}"
|
37
39
|
raise Error::WebDriverError, msg
|
38
40
|
end
|
39
41
|
|
40
|
-
location = run("#{binary} --driver #{driver_name}")
|
42
|
+
location = run("#{binary} --driver #{driver_name}")
|
41
43
|
WebDriver.logger.debug("Driver found at #{location}")
|
42
44
|
Platform.assert_executable location
|
43
45
|
|
@@ -72,13 +74,16 @@ module Selenium
|
|
72
74
|
WebDriver.logger.debug("Executing Process #{command}")
|
73
75
|
|
74
76
|
begin
|
75
|
-
|
76
|
-
return result if result.match?(/^INFO\t/)
|
77
|
+
stdout, stderr, status = Open3.capture3(command)
|
77
78
|
rescue StandardError => e
|
78
|
-
raise Error::WebDriverError, "Unsuccessful command executed: #{command}
|
79
|
+
raise Error::WebDriverError, "Unsuccessful command executed: #{command}", e.message
|
80
|
+
end
|
81
|
+
|
82
|
+
if status.exitstatus.positive?
|
83
|
+
raise Error::WebDriverError, "Unsuccessful command executed: #{command}\n#{stdout}#{stderr}"
|
79
84
|
end
|
80
85
|
|
81
|
-
|
86
|
+
stdout.gsub("INFO\t", '').strip
|
82
87
|
end
|
83
88
|
end
|
84
89
|
end # SeleniumManager
|
@@ -102,7 +102,7 @@ module Selenium
|
|
102
102
|
begin
|
103
103
|
path ||= SeleniumManager.driver_path(self.class::EXECUTABLE)
|
104
104
|
rescue Error::WebDriverError => e
|
105
|
-
WebDriver.logger.debug("Unable obtain driver using Selenium Manager
|
105
|
+
WebDriver.logger.debug("Unable obtain driver using Selenium Manager\n #{e.message}")
|
106
106
|
end
|
107
107
|
|
108
108
|
raise Error::WebDriverError, self.class::MISSING_TEXT unless path
|
@@ -79,12 +79,7 @@ module Selenium
|
|
79
79
|
def build_process(*command)
|
80
80
|
WebDriver.logger.debug("Executing Process #{command}")
|
81
81
|
@process = ChildProcess.build(*command)
|
82
|
-
if WebDriver.logger.debug?
|
83
|
-
@process.io.stdout = @process.io.stderr = WebDriver.logger.io
|
84
|
-
elsif Platform.jruby?
|
85
|
-
# Apparently we need to read the output of drivers on JRuby.
|
86
|
-
@process.io.stdout = @process.io.stderr = File.new(Platform.null_device, 'w')
|
87
|
-
end
|
82
|
+
@process.io = WebDriver.logger.io if WebDriver.logger.debug?
|
88
83
|
|
89
84
|
@process
|
90
85
|
end
|
@@ -104,8 +99,6 @@ module Selenium
|
|
104
99
|
|
105
100
|
def start_process
|
106
101
|
@process = build_process(@executable_path, "--port=#{@port}", *@extra_args)
|
107
|
-
# NOTE: this is a bug only in Windows 7
|
108
|
-
@process.leader = true unless Platform.windows?
|
109
102
|
@process.start
|
110
103
|
end
|
111
104
|
|
@@ -113,7 +106,6 @@ module Selenium
|
|
113
106
|
return if process_exited?
|
114
107
|
|
115
108
|
@process.stop STOP_TIMEOUT
|
116
|
-
@process.io.stdout.close if Platform.jruby? && !WebDriver.logger.debug?
|
117
109
|
end
|
118
110
|
|
119
111
|
def stop_server
|
@@ -66,8 +66,7 @@ module Selenium
|
|
66
66
|
|
67
67
|
def can_lock?
|
68
68
|
@server = TCPServer.new(Platform.localhost, @port)
|
69
|
-
|
70
|
-
|
69
|
+
@server.close_on_exec = true
|
71
70
|
true
|
72
71
|
rescue SocketError, Errno::EADDRINUSE, Errno::EBADF => e
|
73
72
|
WebDriver.logger.debug("#{self}: #{e.message}")
|
@@ -22,6 +22,11 @@ require 'websocket'
|
|
22
22
|
module Selenium
|
23
23
|
module WebDriver
|
24
24
|
class WebSocketConnection
|
25
|
+
CONNECTION_ERRORS = [
|
26
|
+
Errno::ECONNRESET, # connection is aborted (browser process was killed)
|
27
|
+
Errno::EPIPE # broken pipe (browser process was killed)
|
28
|
+
].freeze
|
29
|
+
|
25
30
|
RESPONSE_WAIT_TIMEOUT = 30
|
26
31
|
RESPONSE_WAIT_INTERVAL = 0.1
|
27
32
|
|
@@ -90,6 +95,8 @@ module Selenium
|
|
90
95
|
end
|
91
96
|
end
|
92
97
|
end
|
98
|
+
rescue *CONNECTION_ERRORS
|
99
|
+
Thread.stop
|
93
100
|
end
|
94
101
|
end
|
95
102
|
|
@@ -122,6 +129,8 @@ module Selenium
|
|
122
129
|
Thread.current.report_on_exception = true
|
123
130
|
|
124
131
|
yield params
|
132
|
+
rescue *CONNECTION_ERRORS
|
133
|
+
Thread.stop
|
125
134
|
end
|
126
135
|
end
|
127
136
|
|
@@ -26,7 +26,7 @@ module Selenium
|
|
26
26
|
# @see https://developer.apple.com/documentation/webkit/about_webdriver_for_safari
|
27
27
|
CAPABILITIES = {automatic_inspection: 'safari:automaticInspection',
|
28
28
|
automatic_profiling: 'safari:automaticProfiling'}.freeze
|
29
|
-
BROWSER = 'safari'
|
29
|
+
BROWSER = Selenium::WebDriver::Safari.technology_preview? ? "Safari Technology Preview" : 'safari'
|
30
30
|
|
31
31
|
def add_option(name, value = nil)
|
32
32
|
key = name.is_a?(Hash) ? name.keys.first : name
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Licensed to the Software Freedom Conservancy (SFC) under one
|
4
|
+
# or more contributor license agreements. See the NOTICE file
|
5
|
+
# distributed with this work for additional information
|
6
|
+
# regarding copyright ownership. The SFC licenses this file
|
7
|
+
# to you under the Apache License, Version 2.0 (the
|
8
|
+
# "License"); you may not use this file except in compliance
|
9
|
+
# with the License. You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing,
|
14
|
+
# software distributed under the License is distributed on an
|
15
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
16
|
+
# KIND, either express or implied. See the License for the
|
17
|
+
# specific language governing permissions and limitations
|
18
|
+
# under the License.
|
19
|
+
|
20
|
+
require 'date'
|
21
|
+
|
22
|
+
module Selenium
|
23
|
+
module WebDriver
|
24
|
+
module Support
|
25
|
+
|
26
|
+
#
|
27
|
+
# Updates version in `version.rb` file with nightly suffix:
|
28
|
+
# - VERSION = '4.6.1'
|
29
|
+
# + VERSION = '4.6.1.nightly.20221126'
|
30
|
+
#
|
31
|
+
# @api private
|
32
|
+
#
|
33
|
+
|
34
|
+
class NightlyVersionGenerator
|
35
|
+
|
36
|
+
REGEXP = /VERSION = ['"]([\d.]+)['"]/.freeze
|
37
|
+
|
38
|
+
def self.call(version_file, version_suffix)
|
39
|
+
version_suffix ||= Date.today.strftime('%Y%m%d')
|
40
|
+
version_file_contents = File.read(version_file)
|
41
|
+
version_file_contents.gsub!(REGEXP) do
|
42
|
+
old_version = Regexp.last_match(1)
|
43
|
+
new_version = [old_version, 'nightly', version_suffix].join('.')
|
44
|
+
puts("#{old_version} -> #{new_version}")
|
45
|
+
|
46
|
+
"VERSION = '#{new_version}'"
|
47
|
+
end
|
48
|
+
|
49
|
+
File.write(version_file, version_file_contents)
|
50
|
+
end
|
51
|
+
|
52
|
+
end # NightlyVersionGenerator
|
53
|
+
end # Support
|
54
|
+
end # WebDriver
|
55
|
+
end # Selenium
|
56
|
+
|
57
|
+
if __FILE__ == $PROGRAM_NAME
|
58
|
+
version_file, version_suffix = *ARGV
|
59
|
+
Selenium::WebDriver::Support::NightlyVersionGenerator.call(version_file, version_suffix)
|
60
|
+
end
|
@@ -86,7 +86,7 @@ module Selenium
|
|
86
86
|
#
|
87
87
|
# <option value="foo">Bar</option>
|
88
88
|
#
|
89
|
-
# When
|
89
|
+
# When selecting by :value, selects all options that have a value matching the argument. That is, when given "foo" this
|
90
90
|
# would select an option like:
|
91
91
|
#
|
92
92
|
# <option value="foo">Bar</option>
|
data/lib/selenium/webdriver.rb
CHANGED
data/selenium-webdriver.gemspec
CHANGED
@@ -24,6 +24,7 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.homepage = 'https://selenium.dev'
|
25
25
|
s.metadata = {
|
26
26
|
'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
|
27
|
+
'github_repo' => 'ssh://github.com/SeleniumHQ/selenium',
|
27
28
|
'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb',
|
28
29
|
'rubygems_mfa_required' => 'true'
|
29
30
|
}
|
@@ -48,13 +49,10 @@ Gem::Specification.new do |s|
|
|
48
49
|
s.bindir = 'bin'
|
49
50
|
s.require_paths = ['lib']
|
50
51
|
|
51
|
-
s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 5.0']
|
52
52
|
s.add_runtime_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
|
53
53
|
s.add_runtime_dependency 'rubyzip', ['>= 1.2.2', '< 3.0']
|
54
54
|
s.add_runtime_dependency 'websocket', ['~> 1.0']
|
55
55
|
|
56
|
-
# childprocess requires ffi on windows but doesn't declare it in its dependencies
|
57
|
-
s.add_development_dependency 'ffi'
|
58
56
|
s.add_development_dependency 'pry', ['~> 0.14']
|
59
57
|
s.add_development_dependency 'rack', ['~> 2.0']
|
60
58
|
s.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,37 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Rodionov
|
8
8
|
- Titus Fortner
|
9
9
|
- Thomas Walpole
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2022-
|
13
|
+
date: 2022-12-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: childprocess
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
requirements:
|
19
|
-
- - ">="
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '0.5'
|
22
|
-
- - "<"
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version: '5.0'
|
25
|
-
type: :runtime
|
26
|
-
prerelease: false
|
27
|
-
version_requirements: !ruby/object:Gem::Requirement
|
28
|
-
requirements:
|
29
|
-
- - ">="
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version: '0.5'
|
32
|
-
- - "<"
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '5.0'
|
35
15
|
- !ruby/object:Gem::Dependency
|
36
16
|
name: rexml
|
37
17
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,20 +66,6 @@ dependencies:
|
|
86
66
|
- - "~>"
|
87
67
|
- !ruby/object:Gem::Version
|
88
68
|
version: '1.0'
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: ffi
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
92
|
-
requirements:
|
93
|
-
- - ">="
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: '0'
|
96
|
-
type: :development
|
97
|
-
prerelease: false
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - ">="
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '0'
|
103
69
|
- !ruby/object:Gem::Dependency
|
104
70
|
name: pry
|
105
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -293,6 +259,7 @@ files:
|
|
293
259
|
- lib/selenium/webdriver/common.rb
|
294
260
|
- lib/selenium/webdriver/common/action_builder.rb
|
295
261
|
- lib/selenium/webdriver/common/alert.rb
|
262
|
+
- lib/selenium/webdriver/common/child_process.rb
|
296
263
|
- lib/selenium/webdriver/common/driver.rb
|
297
264
|
- lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
|
298
265
|
- lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
|
@@ -415,7 +382,6 @@ files:
|
|
415
382
|
- lib/selenium/webdriver/support.rb
|
416
383
|
- lib/selenium/webdriver/support/abstract_event_listener.rb
|
417
384
|
- lib/selenium/webdriver/support/block_event_listener.rb
|
418
|
-
- lib/selenium/webdriver/support/cdp/domain.rb.erb
|
419
385
|
- lib/selenium/webdriver/support/cdp_client_generator.rb
|
420
386
|
- lib/selenium/webdriver/support/color.rb
|
421
387
|
- lib/selenium/webdriver/support/escaper.rb
|
@@ -423,6 +389,7 @@ files:
|
|
423
389
|
- lib/selenium/webdriver/support/guards.rb
|
424
390
|
- lib/selenium/webdriver/support/guards/guard.rb
|
425
391
|
- lib/selenium/webdriver/support/guards/guard_condition.rb
|
392
|
+
- lib/selenium/webdriver/support/nightly_version_generator.rb
|
426
393
|
- lib/selenium/webdriver/support/relative_locator.rb
|
427
394
|
- lib/selenium/webdriver/support/select.rb
|
428
395
|
- lib/selenium/webdriver/version.rb
|
@@ -432,9 +399,10 @@ licenses:
|
|
432
399
|
- Apache-2.0
|
433
400
|
metadata:
|
434
401
|
changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
|
402
|
+
github_repo: ssh://github.com/SeleniumHQ/selenium
|
435
403
|
source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
|
436
404
|
rubygems_mfa_required: 'true'
|
437
|
-
post_install_message:
|
405
|
+
post_install_message:
|
438
406
|
rdoc_options: []
|
439
407
|
require_paths:
|
440
408
|
- lib
|
@@ -449,8 +417,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
449
417
|
- !ruby/object:Gem::Version
|
450
418
|
version: 1.3.1
|
451
419
|
requirements: []
|
452
|
-
rubygems_version: 3.
|
453
|
-
signing_key:
|
420
|
+
rubygems_version: 3.1.6
|
421
|
+
signing_key:
|
454
422
|
specification_version: 4
|
455
423
|
summary: Selenium is a browser automation tool for automated testing of webapps and
|
456
424
|
more
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
# Licensed to the Software Freedom Conservancy (SFC) under one
|
4
|
-
# or more contributor license agreements. See the NOTICE file
|
5
|
-
# distributed with this work for additional information
|
6
|
-
# regarding copyright ownership. The SFC licenses this file
|
7
|
-
# to you under the Apache License, Version 2.0 (the
|
8
|
-
# "License"); you may not use this file except in compliance
|
9
|
-
# with the License. You may obtain a copy of the License at
|
10
|
-
#
|
11
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
-
#
|
13
|
-
# Unless required by applicable law or agreed to in writing,
|
14
|
-
# software distributed under the License is distributed on an
|
15
|
-
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
16
|
-
# KIND, either express or implied. See the License for the
|
17
|
-
# specific language governing permissions and limitations
|
18
|
-
# under the License.
|
19
|
-
|
20
|
-
# This file is automatically generated. Any changes will be lost!
|
21
|
-
module Selenium
|
22
|
-
module DevTools
|
23
|
-
module <%= version %>
|
24
|
-
class <%= domain[:domain] %>
|
25
|
-
<% if domain[:events] %>
|
26
|
-
EVENTS = {
|
27
|
-
<% domain[:events].each do |event| %>
|
28
|
-
<%= h.snake_case(event[:name]) %>: '<%= event[:name] %>',
|
29
|
-
<% end %>
|
30
|
-
}.freeze
|
31
|
-
<% end %>
|
32
|
-
|
33
|
-
def initialize(devtools)
|
34
|
-
@devtools = devtools
|
35
|
-
end
|
36
|
-
|
37
|
-
def on(event, &block)
|
38
|
-
event = EVENTS[event] if event.is_a?(Symbol)
|
39
|
-
@devtools.callbacks["<%= domain[:domain] %>.#{event}"] << block
|
40
|
-
end
|
41
|
-
|
42
|
-
<% domain[:commands].each do |command| %>
|
43
|
-
<% if command[:parameters] %>
|
44
|
-
def <%= h.snake_case(command[:name]) %>(<%= h.kwargs(command[:parameters]) %>)
|
45
|
-
<% else %>
|
46
|
-
def <%= h.snake_case(command[:name]) %>
|
47
|
-
<% end %>
|
48
|
-
<% if command[:parameters] %>
|
49
|
-
@devtools.send_cmd('<%= domain[:domain] %>.<%= command[:name] %>',
|
50
|
-
<% until command[:parameters].empty? %>
|
51
|
-
<% parameter = command[:parameters].shift %>
|
52
|
-
<%= parameter[:name] %>: <%= h.snake_case(parameter[:name]) %><%= command[:parameters].empty? ? ')' : ',' %>
|
53
|
-
<% end %>
|
54
|
-
<% else %>
|
55
|
-
@devtools.send_cmd('<%= domain[:domain] %>.<%= command[:name] %>')
|
56
|
-
<% end %>
|
57
|
-
end
|
58
|
-
|
59
|
-
<% end %>
|
60
|
-
end # <%= domain[:domain] %>
|
61
|
-
end # <%= version %>
|
62
|
-
end # DevTools
|
63
|
-
end # Selenium
|