selenium-webdriver 4.0.0.beta3 → 4.0.0.beta4
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 +1896 -0
- data/Gemfile +6 -0
- data/LICENSE +202 -0
- data/NOTICE +2 -0
- data/README.md +34 -0
- data/lib/selenium/webdriver.rb +0 -1
- 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/chrome/driver.rb +2 -5
- data/lib/selenium/webdriver/chrome/options.rb +1 -1
- data/lib/selenium/webdriver/chrome/profile.rb +0 -0
- data/lib/selenium/webdriver/common.rb +2 -0
- data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +43 -0
- data/lib/selenium/{devtools.rb → webdriver/common/driver_extensions/has_cdp.rb} +16 -8
- data/lib/selenium/webdriver/common/options.rb +9 -3
- data/lib/selenium/webdriver/common/proxy.rb +2 -2
- data/lib/selenium/webdriver/common/takes_screenshot.rb +9 -6
- data/lib/selenium/webdriver/edge/options.rb +0 -0
- data/lib/selenium/webdriver/edge/profile.rb +0 -0
- data/lib/selenium/webdriver/firefox/driver.rb +1 -0
- data/lib/selenium/webdriver/firefox/features.rb +6 -1
- data/lib/selenium/webdriver/remote/bridge.rb +1 -1
- data/lib/selenium/webdriver/remote/capabilities.rb +1 -11
- data/lib/selenium/webdriver/support/cdp/domain.rb.erb +63 -0
- data/lib/selenium/webdriver/support/cdp_client_generator.rb +108 -0
- data/lib/selenium/webdriver/version.rb +1 -1
- data/selenium-webdriver.gemspec +62 -0
- metadata +42 -48
File without changes
|
File without changes
|
@@ -24,7 +24,8 @@ module Selenium
|
|
24
24
|
|
25
25
|
FIREFOX_COMMANDS = {
|
26
26
|
install_addon: [:post, 'session/:session_id/moz/addon/install'],
|
27
|
-
uninstall_addon: [:post, 'session/:session_id/moz/addon/uninstall']
|
27
|
+
uninstall_addon: [:post, 'session/:session_id/moz/addon/uninstall'],
|
28
|
+
full_page_screenshot: [:get, 'session/:session_id/moz/screenshot/full']
|
28
29
|
}.freeze
|
29
30
|
|
30
31
|
def commands(command)
|
@@ -41,6 +42,10 @@ module Selenium
|
|
41
42
|
execute :uninstall_addon, {}, {id: id}
|
42
43
|
end
|
43
44
|
|
45
|
+
def full_screenshot
|
46
|
+
execute :full_page_screenshot
|
47
|
+
end
|
48
|
+
|
44
49
|
end # Bridge
|
45
50
|
end # Firefox
|
46
51
|
end # WebDriver
|
@@ -603,7 +603,7 @@ module Selenium
|
|
603
603
|
end
|
604
604
|
|
605
605
|
def prepare_capabilities_payload(capabilities)
|
606
|
-
capabilities = {
|
606
|
+
capabilities = {alwaysMatch: capabilities} if !capabilities['alwaysMatch'] && !capabilities['firstMatch']
|
607
607
|
{capabilities: capabilities}
|
608
608
|
end
|
609
609
|
|
@@ -307,23 +307,13 @@ module Selenium
|
|
307
307
|
when :platform
|
308
308
|
value.to_s.upcase
|
309
309
|
when :proxy
|
310
|
-
|
310
|
+
value&.as_json
|
311
311
|
when :unhandled_prompt_behavior
|
312
312
|
value.is_a?(Symbol) ? value.to_s.tr('_', ' ') : value
|
313
313
|
else
|
314
314
|
value
|
315
315
|
end
|
316
316
|
end
|
317
|
-
|
318
|
-
def convert_proxy(value)
|
319
|
-
return unless value
|
320
|
-
|
321
|
-
hash = value.as_json
|
322
|
-
hash['proxyType'] &&= hash['proxyType'].downcase
|
323
|
-
hash['noProxy'] = hash['noProxy'].split(', ') if hash['noProxy'].is_a?(String)
|
324
|
-
|
325
|
-
hash
|
326
|
-
end
|
327
317
|
end # Capabilities
|
328
318
|
end # Remote
|
329
319
|
end # WebDriver
|
@@ -0,0 +1,63 @@
|
|
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
|
@@ -0,0 +1,108 @@
|
|
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 'erb'
|
21
|
+
require 'fileutils'
|
22
|
+
require 'json'
|
23
|
+
|
24
|
+
module Selenium
|
25
|
+
module WebDriver
|
26
|
+
module Support
|
27
|
+
class CDPClientGenerator
|
28
|
+
# Input JSON files are generated from PDL tasks.
|
29
|
+
TEMPLATE_PATH = File.expand_path('cdp/domain.rb.erb', __dir__)
|
30
|
+
|
31
|
+
RESERVED_KEYWORDS = %w[end].freeze
|
32
|
+
|
33
|
+
def call(output_dir:, version:, browser_protocol_path: nil, js_protocol_path: nil, loader_path: nil, **)
|
34
|
+
@template = ERB.new(File.read(TEMPLATE_PATH))
|
35
|
+
@output_dir = output_dir
|
36
|
+
@loader_path = loader_path || "#{@output_dir}.rb"
|
37
|
+
@version = version
|
38
|
+
|
39
|
+
browser_protocol_path ||= File.expand_path('cdp/browser_protocol.json', __dir__)
|
40
|
+
js_protocol_path ||= File.expand_path('cdp/js_protocol.json', __dir__)
|
41
|
+
|
42
|
+
browser_protocol = JSON.parse(File.read(browser_protocol_path), symbolize_names: true)
|
43
|
+
js_protocol = JSON.parse(File.read(js_protocol_path), symbolize_names: true)
|
44
|
+
|
45
|
+
FileUtils.mkdir_p(@output_dir)
|
46
|
+
|
47
|
+
browser_protocol[:domains].each(&method(:process_domain))
|
48
|
+
js_protocol[:domains].each(&method(:process_domain))
|
49
|
+
require_file
|
50
|
+
end
|
51
|
+
|
52
|
+
def process_domain(domain)
|
53
|
+
result = @template.result_with_hash(domain: domain, version: @version.upcase, h: self)
|
54
|
+
filename = File.join(@output_dir, "#{snake_case(domain[:domain])}.rb")
|
55
|
+
File.write(filename, remove_empty_lines(result))
|
56
|
+
end
|
57
|
+
|
58
|
+
def snake_case(string)
|
59
|
+
name = string.gsub('JavaScript', 'Javascript')
|
60
|
+
.gsub(/([A-Z]+)([A-Z][a-z]{2,})/, '\1_\2')
|
61
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
62
|
+
.downcase
|
63
|
+
# Certain CDP parameters conflict with Ruby keywords
|
64
|
+
# so we prefix the name with underscore.
|
65
|
+
name = "_#{name}" if RESERVED_KEYWORDS.include?(name)
|
66
|
+
|
67
|
+
name
|
68
|
+
end
|
69
|
+
|
70
|
+
def kwargs(parameters)
|
71
|
+
parameters = parameters.map do |parameter|
|
72
|
+
if parameter[:optional]
|
73
|
+
"#{snake_case(parameter[:name])}: nil"
|
74
|
+
else
|
75
|
+
"#{snake_case(parameter[:name])}:"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
parameters.join(', ')
|
79
|
+
end
|
80
|
+
|
81
|
+
def remove_empty_lines(string)
|
82
|
+
string.split("\n").reject { |l| l =~ /^\s+$/ }.join("\n")
|
83
|
+
end
|
84
|
+
|
85
|
+
def require_file
|
86
|
+
# rubocop:disable Lint/InterpolationCheck
|
87
|
+
dynamic_location = '#{File.dirname(File.absolute_path(__FILE__))}'
|
88
|
+
# rubocop:enable Lint/InterpolationCheck
|
89
|
+
|
90
|
+
require_all = "Dir.glob(\"#{dynamic_location}/#{@version}/*\", &method(:require))"
|
91
|
+
File.open(@loader_path, 'w') { |file| file.write(require_all) }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
if $PROGRAM_NAME == __FILE__
|
99
|
+
browser_protocol_path, js_protocol_path, output_dir, loader_path, version = *ARGV
|
100
|
+
|
101
|
+
Selenium::WebDriver::Support::CDPClientGenerator.new.call(
|
102
|
+
browser_protocol_path: browser_protocol_path,
|
103
|
+
js_protocol_path: js_protocol_path,
|
104
|
+
output_dir: output_dir,
|
105
|
+
loader_path: loader_path,
|
106
|
+
version: version
|
107
|
+
)
|
108
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
root = File.expand_path(File.dirname(__FILE__))
|
4
|
+
raise "cwd must be #{root} when reading gemspec" if root != Dir.pwd
|
5
|
+
|
6
|
+
$LOAD_PATH.push(File.expand_path('lib', root))
|
7
|
+
require 'selenium/webdriver/version'
|
8
|
+
|
9
|
+
Gem::Specification.new do |s|
|
10
|
+
s.name = 'selenium-webdriver'
|
11
|
+
s.version = Selenium::WebDriver::VERSION
|
12
|
+
|
13
|
+
s.authors = ['Alex Rodionov', 'Titus Fortner', 'Thomas Walpole']
|
14
|
+
s.email = %w[p0deje@gmail.com titusfortner@gmail.com twalpole@gmail.com]
|
15
|
+
|
16
|
+
s.summary = 'Selenium is a browser automation tool for automated testing of webapps and more'
|
17
|
+
s.description = <<-DESCRIPTION
|
18
|
+
Selenium implements the W3C WebDriver protocol to automate popular browsers.
|
19
|
+
It aims to mimic the behaviour of a real user as it interacts with the application's HTML.
|
20
|
+
It's primarily intended for web application testing, but any web-based task can automated.
|
21
|
+
DESCRIPTION
|
22
|
+
|
23
|
+
s.license = 'Apache-2.0'
|
24
|
+
s.homepage = 'https://selenium.dev'
|
25
|
+
s.metadata = {
|
26
|
+
'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
|
27
|
+
'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb'
|
28
|
+
}
|
29
|
+
|
30
|
+
s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
|
31
|
+
s.required_ruby_version = Gem::Requirement.new('>= 2.5')
|
32
|
+
|
33
|
+
s.files = [
|
34
|
+
'CHANGES',
|
35
|
+
'LICENSE',
|
36
|
+
'NOTICE',
|
37
|
+
'Gemfile',
|
38
|
+
'README.md',
|
39
|
+
'selenium-webdriver.gemspec',
|
40
|
+
'lib/selenium-webdriver.rb',
|
41
|
+
'lib/selenium/server.rb',
|
42
|
+
'lib/selenium/webdriver.rb'
|
43
|
+
] + Dir['lib/selenium/webdriver/**/*']
|
44
|
+
|
45
|
+
s.require_paths = ['lib']
|
46
|
+
|
47
|
+
s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 5.0']
|
48
|
+
s.add_runtime_dependency 'rexml', ['~> 3.2']
|
49
|
+
s.add_runtime_dependency 'rubyzip', ['>= 1.2.2']
|
50
|
+
|
51
|
+
# childprocess requires ffi on windows but doesn't declare it in its dependencies
|
52
|
+
s.add_development_dependency 'ffi'
|
53
|
+
s.add_development_dependency 'rack', ['~> 2.0']
|
54
|
+
s.add_development_dependency 'rake'
|
55
|
+
s.add_development_dependency 'rspec', ['~> 3.0']
|
56
|
+
s.add_development_dependency 'rubocop', ['~> 1.8.0']
|
57
|
+
s.add_development_dependency 'rubocop-performance'
|
58
|
+
s.add_development_dependency 'rubocop-rspec'
|
59
|
+
s.add_development_dependency 'webmock', ['~> 3.5']
|
60
|
+
s.add_development_dependency 'webrick', ['~> 1.7']
|
61
|
+
s.add_development_dependency 'yard', ['~> 0.9.11']
|
62
|
+
end
|
metadata
CHANGED
@@ -1,18 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0.
|
4
|
+
version: 4.0.0.beta4
|
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: 2021-
|
13
|
+
date: 2021-06-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
+
name: childprocess
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
17
18
|
requirements:
|
18
19
|
- - ">="
|
@@ -21,9 +22,8 @@ dependencies:
|
|
21
22
|
- - "<"
|
22
23
|
- !ruby/object:Gem::Version
|
23
24
|
version: '5.0'
|
24
|
-
name: childprocess
|
25
|
-
prerelease: false
|
26
25
|
type: :runtime
|
26
|
+
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
28
28
|
requirements:
|
29
29
|
- - ">="
|
@@ -33,182 +33,168 @@ dependencies:
|
|
33
33
|
- !ruby/object:Gem::Version
|
34
34
|
version: '5.0'
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
+
name: rexml
|
36
37
|
requirement: !ruby/object:Gem::Requirement
|
37
38
|
requirements:
|
38
39
|
- - "~>"
|
39
40
|
- !ruby/object:Gem::Version
|
40
41
|
version: '3.2'
|
41
|
-
name: rexml
|
42
|
-
prerelease: false
|
43
42
|
type: :runtime
|
43
|
+
prerelease: false
|
44
44
|
version_requirements: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
48
|
version: '3.2'
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
+
name: rubyzip
|
50
51
|
requirement: !ruby/object:Gem::Requirement
|
51
52
|
requirements:
|
52
53
|
- - ">="
|
53
54
|
- !ruby/object:Gem::Version
|
54
55
|
version: 1.2.2
|
55
|
-
name: rubyzip
|
56
|
-
prerelease: false
|
57
56
|
type: :runtime
|
57
|
+
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: 1.2.2
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.0'
|
69
|
-
name: websocket
|
70
|
-
prerelease: false
|
71
|
-
type: :runtime
|
72
|
-
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - "~>"
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '1.0'
|
77
|
-
- !ruby/object:Gem::Dependency
|
64
|
+
name: ffi
|
78
65
|
requirement: !ruby/object:Gem::Requirement
|
79
66
|
requirements:
|
80
67
|
- - ">="
|
81
68
|
- !ruby/object:Gem::Version
|
82
69
|
version: '0'
|
83
|
-
name: ffi
|
84
|
-
prerelease: false
|
85
70
|
type: :development
|
71
|
+
prerelease: false
|
86
72
|
version_requirements: !ruby/object:Gem::Requirement
|
87
73
|
requirements:
|
88
74
|
- - ">="
|
89
75
|
- !ruby/object:Gem::Version
|
90
76
|
version: '0'
|
91
77
|
- !ruby/object:Gem::Dependency
|
78
|
+
name: rack
|
92
79
|
requirement: !ruby/object:Gem::Requirement
|
93
80
|
requirements:
|
94
81
|
- - "~>"
|
95
82
|
- !ruby/object:Gem::Version
|
96
83
|
version: '2.0'
|
97
|
-
name: rack
|
98
|
-
prerelease: false
|
99
84
|
type: :development
|
85
|
+
prerelease: false
|
100
86
|
version_requirements: !ruby/object:Gem::Requirement
|
101
87
|
requirements:
|
102
88
|
- - "~>"
|
103
89
|
- !ruby/object:Gem::Version
|
104
90
|
version: '2.0'
|
105
91
|
- !ruby/object:Gem::Dependency
|
92
|
+
name: rake
|
106
93
|
requirement: !ruby/object:Gem::Requirement
|
107
94
|
requirements:
|
108
95
|
- - ">="
|
109
96
|
- !ruby/object:Gem::Version
|
110
97
|
version: '0'
|
111
|
-
name: rake
|
112
|
-
prerelease: false
|
113
98
|
type: :development
|
99
|
+
prerelease: false
|
114
100
|
version_requirements: !ruby/object:Gem::Requirement
|
115
101
|
requirements:
|
116
102
|
- - ">="
|
117
103
|
- !ruby/object:Gem::Version
|
118
104
|
version: '0'
|
119
105
|
- !ruby/object:Gem::Dependency
|
106
|
+
name: rspec
|
120
107
|
requirement: !ruby/object:Gem::Requirement
|
121
108
|
requirements:
|
122
109
|
- - "~>"
|
123
110
|
- !ruby/object:Gem::Version
|
124
111
|
version: '3.0'
|
125
|
-
name: rspec
|
126
|
-
prerelease: false
|
127
112
|
type: :development
|
113
|
+
prerelease: false
|
128
114
|
version_requirements: !ruby/object:Gem::Requirement
|
129
115
|
requirements:
|
130
116
|
- - "~>"
|
131
117
|
- !ruby/object:Gem::Version
|
132
118
|
version: '3.0'
|
133
119
|
- !ruby/object:Gem::Dependency
|
120
|
+
name: rubocop
|
134
121
|
requirement: !ruby/object:Gem::Requirement
|
135
122
|
requirements:
|
136
123
|
- - "~>"
|
137
124
|
- !ruby/object:Gem::Version
|
138
125
|
version: 1.8.0
|
139
|
-
name: rubocop
|
140
|
-
prerelease: false
|
141
126
|
type: :development
|
127
|
+
prerelease: false
|
142
128
|
version_requirements: !ruby/object:Gem::Requirement
|
143
129
|
requirements:
|
144
130
|
- - "~>"
|
145
131
|
- !ruby/object:Gem::Version
|
146
132
|
version: 1.8.0
|
147
133
|
- !ruby/object:Gem::Dependency
|
134
|
+
name: rubocop-performance
|
148
135
|
requirement: !ruby/object:Gem::Requirement
|
149
136
|
requirements:
|
150
137
|
- - ">="
|
151
138
|
- !ruby/object:Gem::Version
|
152
139
|
version: '0'
|
153
|
-
name: rubocop-performance
|
154
|
-
prerelease: false
|
155
140
|
type: :development
|
141
|
+
prerelease: false
|
156
142
|
version_requirements: !ruby/object:Gem::Requirement
|
157
143
|
requirements:
|
158
144
|
- - ">="
|
159
145
|
- !ruby/object:Gem::Version
|
160
146
|
version: '0'
|
161
147
|
- !ruby/object:Gem::Dependency
|
148
|
+
name: rubocop-rspec
|
162
149
|
requirement: !ruby/object:Gem::Requirement
|
163
150
|
requirements:
|
164
151
|
- - ">="
|
165
152
|
- !ruby/object:Gem::Version
|
166
153
|
version: '0'
|
167
|
-
name: rubocop-rspec
|
168
|
-
prerelease: false
|
169
154
|
type: :development
|
155
|
+
prerelease: false
|
170
156
|
version_requirements: !ruby/object:Gem::Requirement
|
171
157
|
requirements:
|
172
158
|
- - ">="
|
173
159
|
- !ruby/object:Gem::Version
|
174
160
|
version: '0'
|
175
161
|
- !ruby/object:Gem::Dependency
|
162
|
+
name: webmock
|
176
163
|
requirement: !ruby/object:Gem::Requirement
|
177
164
|
requirements:
|
178
165
|
- - "~>"
|
179
166
|
- !ruby/object:Gem::Version
|
180
167
|
version: '3.5'
|
181
|
-
name: webmock
|
182
|
-
prerelease: false
|
183
168
|
type: :development
|
169
|
+
prerelease: false
|
184
170
|
version_requirements: !ruby/object:Gem::Requirement
|
185
171
|
requirements:
|
186
172
|
- - "~>"
|
187
173
|
- !ruby/object:Gem::Version
|
188
174
|
version: '3.5'
|
189
175
|
- !ruby/object:Gem::Dependency
|
176
|
+
name: webrick
|
190
177
|
requirement: !ruby/object:Gem::Requirement
|
191
178
|
requirements:
|
192
179
|
- - "~>"
|
193
180
|
- !ruby/object:Gem::Version
|
194
181
|
version: '1.7'
|
195
|
-
name: webrick
|
196
|
-
prerelease: false
|
197
182
|
type: :development
|
183
|
+
prerelease: false
|
198
184
|
version_requirements: !ruby/object:Gem::Requirement
|
199
185
|
requirements:
|
200
186
|
- - "~>"
|
201
187
|
- !ruby/object:Gem::Version
|
202
188
|
version: '1.7'
|
203
189
|
- !ruby/object:Gem::Dependency
|
190
|
+
name: yard
|
204
191
|
requirement: !ruby/object:Gem::Requirement
|
205
192
|
requirements:
|
206
193
|
- - "~>"
|
207
194
|
- !ruby/object:Gem::Version
|
208
195
|
version: 0.9.11
|
209
|
-
name: yard
|
210
|
-
prerelease: false
|
211
196
|
type: :development
|
197
|
+
prerelease: false
|
212
198
|
version_requirements: !ruby/object:Gem::Requirement
|
213
199
|
requirements:
|
214
200
|
- - "~>"
|
@@ -226,8 +212,12 @@ executables: []
|
|
226
212
|
extensions: []
|
227
213
|
extra_rdoc_files: []
|
228
214
|
files:
|
215
|
+
- CHANGES
|
216
|
+
- Gemfile
|
217
|
+
- LICENSE
|
218
|
+
- NOTICE
|
219
|
+
- README.md
|
229
220
|
- lib/selenium-webdriver.rb
|
230
|
-
- lib/selenium/devtools.rb
|
231
221
|
- lib/selenium/server.rb
|
232
222
|
- lib/selenium/webdriver.rb
|
233
223
|
- lib/selenium/webdriver/atoms.rb
|
@@ -246,8 +236,10 @@ files:
|
|
246
236
|
- lib/selenium/webdriver/common/alert.rb
|
247
237
|
- lib/selenium/webdriver/common/driver.rb
|
248
238
|
- lib/selenium/webdriver/common/driver_extensions/downloads_files.rb
|
239
|
+
- lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb
|
249
240
|
- lib/selenium/webdriver/common/driver_extensions/has_addons.rb
|
250
241
|
- lib/selenium/webdriver/common/driver_extensions/has_authentication.rb
|
242
|
+
- lib/selenium/webdriver/common/driver_extensions/has_cdp.rb
|
251
243
|
- lib/selenium/webdriver/common/driver_extensions/has_debugger.rb
|
252
244
|
- lib/selenium/webdriver/common/driver_extensions/has_devtools.rb
|
253
245
|
- lib/selenium/webdriver/common/driver_extensions/has_location.rb
|
@@ -340,6 +332,8 @@ files:
|
|
340
332
|
- lib/selenium/webdriver/support.rb
|
341
333
|
- lib/selenium/webdriver/support/abstract_event_listener.rb
|
342
334
|
- lib/selenium/webdriver/support/block_event_listener.rb
|
335
|
+
- lib/selenium/webdriver/support/cdp/domain.rb.erb
|
336
|
+
- lib/selenium/webdriver/support/cdp_client_generator.rb
|
343
337
|
- lib/selenium/webdriver/support/color.rb
|
344
338
|
- lib/selenium/webdriver/support/escaper.rb
|
345
339
|
- lib/selenium/webdriver/support/event_firing_bridge.rb
|
@@ -349,13 +343,14 @@ files:
|
|
349
343
|
- lib/selenium/webdriver/support/relative_locator.rb
|
350
344
|
- lib/selenium/webdriver/support/select.rb
|
351
345
|
- lib/selenium/webdriver/version.rb
|
346
|
+
- selenium-webdriver.gemspec
|
352
347
|
homepage: https://selenium.dev
|
353
348
|
licenses:
|
354
349
|
- Apache-2.0
|
355
350
|
metadata:
|
356
351
|
changelog_uri: https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES
|
357
352
|
source_code_uri: https://github.com/SeleniumHQ/selenium/tree/trunk/rb
|
358
|
-
post_install_message:
|
353
|
+
post_install_message:
|
359
354
|
rdoc_options: []
|
360
355
|
require_paths:
|
361
356
|
- lib
|
@@ -370,9 +365,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
370
365
|
- !ruby/object:Gem::Version
|
371
366
|
version: 1.3.1
|
372
367
|
requirements: []
|
373
|
-
|
374
|
-
|
375
|
-
signing_key:
|
368
|
+
rubygems_version: 3.0.3
|
369
|
+
signing_key:
|
376
370
|
specification_version: 4
|
377
371
|
summary: Selenium is a browser automation tool for automated testing of webapps and
|
378
372
|
more
|