selenium-webdriver 3.142.1 → 4.1.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 +5 -5
- data/CHANGES +406 -4
- data/Gemfile +3 -1
- data/LICENSE +1 -1
- data/NOTICE +2 -0
- data/README.md +4 -5
- data/lib/selenium/server.rb +69 -63
- data/lib/selenium/webdriver/atoms/findElements.js +122 -0
- data/lib/selenium/webdriver/atoms/getAttribute.js +100 -7
- data/lib/selenium/webdriver/atoms/isDisplayed.js +76 -78
- data/lib/selenium/webdriver/atoms/mutationListener.js +55 -0
- data/lib/selenium/webdriver/chrome/driver.rb +26 -70
- data/lib/selenium/webdriver/chrome/features.rb +106 -0
- data/lib/selenium/webdriver/chrome/options.rb +128 -53
- data/lib/selenium/webdriver/chrome/profile.rb +8 -5
- data/lib/selenium/webdriver/chrome/service.rb +8 -15
- data/lib/selenium/webdriver/chrome.rb +10 -9
- data/lib/selenium/webdriver/common/action_builder.rb +97 -249
- data/lib/selenium/webdriver/common/driver.rb +112 -23
- data/lib/selenium/webdriver/common/driver_extensions/full_page_screenshot.rb +43 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_apple_permissions.rb +51 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_authentication.rb +89 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_casting.rb +77 -0
- data/lib/selenium/webdriver/common/driver_extensions/{has_touch_screen.rb → has_cdp.rb} +10 -8
- data/lib/selenium/webdriver/common/driver_extensions/has_context.rb +45 -0
- data/lib/selenium/webdriver/{firefox/util.rb → common/driver_extensions/has_devtools.rb} +16 -19
- data/lib/selenium/webdriver/common/driver_extensions/has_launching.rb +38 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +5 -8
- data/lib/selenium/webdriver/common/driver_extensions/has_log_events.rb +144 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_logs.rb +30 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +17 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +6 -27
- data/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +136 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +11 -11
- data/lib/selenium/webdriver/common/driver_extensions/has_pinned_scripts.rb +77 -0
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +1 -0
- data/lib/selenium/webdriver/common/driver_extensions/{rotatable.rb → prints_page.rb} +18 -20
- data/lib/selenium/webdriver/common/element.rb +82 -22
- data/lib/selenium/webdriver/common/error.rb +32 -196
- data/lib/selenium/webdriver/common/interactions/interaction.rb +4 -1
- data/lib/selenium/webdriver/common/interactions/key_actions.rb +5 -5
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +13 -13
- data/lib/selenium/webdriver/common/log_entry.rb +2 -2
- data/lib/selenium/webdriver/common/logger.rb +50 -15
- data/lib/selenium/webdriver/common/manager.rb +15 -15
- data/lib/selenium/webdriver/common/options.rb +184 -0
- data/lib/selenium/webdriver/common/platform.rb +6 -1
- data/lib/selenium/webdriver/common/port_prober.rb +4 -6
- data/lib/selenium/webdriver/common/profile_helper.rb +11 -9
- data/lib/selenium/webdriver/common/proxy.rb +6 -3
- data/lib/selenium/webdriver/common/search_context.rb +7 -3
- data/lib/selenium/webdriver/common/service.rb +27 -122
- data/lib/selenium/webdriver/common/service_manager.rb +151 -0
- data/lib/selenium/webdriver/common/shadow_root.rb +87 -0
- data/lib/selenium/webdriver/common/socket_lock.rb +2 -2
- data/lib/selenium/webdriver/common/socket_poller.rb +2 -2
- data/lib/selenium/webdriver/common/takes_screenshot.rb +66 -0
- data/lib/selenium/webdriver/common/target_locator.rb +32 -4
- data/lib/selenium/webdriver/common/timeouts.rb +31 -4
- data/lib/selenium/webdriver/common/wait.rb +1 -1
- data/lib/selenium/webdriver/common/window.rb +0 -4
- data/lib/selenium/webdriver/common/zipper.rb +3 -9
- data/lib/selenium/webdriver/common.rb +24 -17
- data/lib/selenium/webdriver/devtools/console_event.rb +38 -0
- data/lib/selenium/webdriver/devtools/exception_event.rb +36 -0
- data/lib/selenium/webdriver/devtools/mutation_event.rb +37 -0
- data/lib/selenium/webdriver/devtools/pinned_script.rb +59 -0
- data/lib/selenium/webdriver/devtools/request.rb +67 -0
- data/lib/selenium/webdriver/devtools/response.rb +66 -0
- data/lib/selenium/webdriver/devtools.rb +193 -0
- data/lib/selenium/webdriver/edge/driver.rb +7 -29
- data/lib/selenium/webdriver/{chrome/bridge.rb → edge/features.rb} +16 -22
- data/lib/selenium/webdriver/edge/options.rb +11 -48
- data/lib/selenium/webdriver/{common/w3c_manager.rb → edge/profile.rb} +7 -19
- data/lib/selenium/webdriver/edge/service.rb +10 -26
- data/lib/selenium/webdriver/edge.rb +11 -14
- data/lib/selenium/webdriver/firefox/driver.rb +31 -19
- data/lib/selenium/webdriver/firefox/extension.rb +8 -0
- data/lib/selenium/webdriver/firefox/{bridge.rb → features.rb} +23 -4
- data/lib/selenium/webdriver/firefox/options.rb +71 -50
- data/lib/selenium/webdriver/firefox/profile.rb +21 -71
- data/lib/selenium/webdriver/firefox/service.rb +5 -9
- data/lib/selenium/webdriver/firefox.rb +22 -20
- data/lib/selenium/webdriver/ie/driver.rb +1 -47
- data/lib/selenium/webdriver/ie/options.rb +15 -46
- data/lib/selenium/webdriver/ie/service.rb +13 -15
- data/lib/selenium/webdriver/ie.rb +8 -7
- data/lib/selenium/webdriver/remote/bridge.rb +561 -86
- data/lib/selenium/webdriver/remote/capabilities.rb +159 -123
- data/lib/selenium/webdriver/remote/commands.rb +7 -0
- data/lib/selenium/webdriver/remote/driver.rb +22 -12
- data/lib/selenium/webdriver/remote/http/common.rb +0 -5
- data/lib/selenium/webdriver/remote/http/default.rb +17 -20
- data/lib/selenium/webdriver/remote/http/persistent.rb +11 -6
- data/lib/selenium/webdriver/remote/response.rb +16 -47
- data/lib/selenium/webdriver/remote.rb +15 -12
- data/lib/selenium/webdriver/safari/driver.rb +3 -31
- data/lib/selenium/webdriver/safari/{bridge.rb → features.rb} +6 -6
- data/lib/selenium/webdriver/safari/options.rb +10 -29
- data/lib/selenium/webdriver/safari/service.rb +4 -8
- data/lib/selenium/webdriver/safari.rb +17 -9
- data/lib/selenium/webdriver/support/block_event_listener.rb +1 -1
- 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/support/color.rb +2 -2
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +4 -4
- data/lib/selenium/webdriver/support/guards/guard.rb +89 -0
- data/lib/selenium/webdriver/{firefox/marionette/bridge.rb → support/guards/guard_condition.rb} +22 -19
- data/lib/selenium/webdriver/support/guards.rb +95 -0
- data/lib/selenium/webdriver/support/relative_locator.rb +51 -0
- data/lib/selenium/webdriver/support/select.rb +3 -3
- data/lib/selenium/webdriver/support.rb +1 -0
- data/lib/selenium/webdriver/version.rb +1 -1
- data/lib/selenium/webdriver.rb +13 -13
- data/selenium-webdriver.gemspec +29 -13
- metadata +125 -73
- data/lib/selenium/webdriver/common/bridge_helper.rb +0 -82
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +0 -64
- data/lib/selenium/webdriver/common/keyboard.rb +0 -70
- data/lib/selenium/webdriver/common/mouse.rb +0 -89
- data/lib/selenium/webdriver/common/touch_action_builder.rb +0 -78
- data/lib/selenium/webdriver/common/touch_screen.rb +0 -123
- data/lib/selenium/webdriver/common/w3c_action_builder.rb +0 -212
- data/lib/selenium/webdriver/edge/bridge.rb +0 -76
- data/lib/selenium/webdriver/firefox/binary.rb +0 -187
- data/lib/selenium/webdriver/firefox/extension/prefs.json +0 -69
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/launcher.rb +0 -111
- data/lib/selenium/webdriver/firefox/legacy/driver.rb +0 -83
- data/lib/selenium/webdriver/firefox/marionette/driver.rb +0 -90
- data/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/remote/oss/bridge.rb +0 -594
- data/lib/selenium/webdriver/remote/oss/commands.rb +0 -223
- data/lib/selenium/webdriver/remote/w3c/bridge.rb +0 -605
- data/lib/selenium/webdriver/remote/w3c/capabilities.rb +0 -310
- data/lib/selenium/webdriver/remote/w3c/commands.rb +0 -157
data/lib/selenium/webdriver/{firefox/marionette/bridge.rb → support/guards/guard_condition.rb}
RENAMED
|
@@ -19,31 +19,34 @@
|
|
|
19
19
|
|
|
20
20
|
module Selenium
|
|
21
21
|
module WebDriver
|
|
22
|
-
module
|
|
23
|
-
|
|
24
|
-
module Bridge
|
|
22
|
+
module Support
|
|
23
|
+
class Guards
|
|
25
24
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
#
|
|
26
|
+
# Guard derived from RSpec example metadata.
|
|
27
|
+
# @api private
|
|
28
|
+
#
|
|
30
29
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
end
|
|
30
|
+
class GuardCondition
|
|
31
|
+
attr_accessor :name, :execution
|
|
34
32
|
|
|
35
|
-
def
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
def initialize(name, condition = nil, &blk)
|
|
34
|
+
@name = name
|
|
35
|
+
@execution = if block_given?
|
|
36
|
+
proc(&blk)
|
|
37
|
+
else
|
|
38
|
+
proc { |guarded| guarded.include?(condition) }
|
|
39
|
+
end
|
|
39
40
|
end
|
|
40
41
|
|
|
41
|
-
def
|
|
42
|
-
|
|
42
|
+
def satisfied?(guard)
|
|
43
|
+
list = Array(guard.guarded[@name])
|
|
44
|
+
|
|
45
|
+
list.empty? || @execution.call(list)
|
|
43
46
|
end
|
|
44
47
|
|
|
45
|
-
end #
|
|
46
|
-
end #
|
|
47
|
-
end #
|
|
48
|
+
end # GuardCondition
|
|
49
|
+
end # Guards
|
|
50
|
+
end # Support
|
|
48
51
|
end # WebDriver
|
|
49
52
|
end # Selenium
|
|
@@ -0,0 +1,95 @@
|
|
|
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_relative 'guards/guard_condition'
|
|
21
|
+
require_relative 'guards/guard'
|
|
22
|
+
|
|
23
|
+
module Selenium
|
|
24
|
+
module WebDriver
|
|
25
|
+
module Support
|
|
26
|
+
class Guards
|
|
27
|
+
GUARD_TYPES = %i[except only exclude exclusive].freeze
|
|
28
|
+
|
|
29
|
+
attr_reader :messages
|
|
30
|
+
attr_accessor :bug_tracker
|
|
31
|
+
|
|
32
|
+
def initialize(example, bug_tracker: '', conditions: nil)
|
|
33
|
+
@example = example
|
|
34
|
+
@bug_tracker = bug_tracker
|
|
35
|
+
@guard_conditions = conditions || []
|
|
36
|
+
@guards = collect_example_guards
|
|
37
|
+
@messages = {}
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def add_condition(name, condition = nil, &blk)
|
|
41
|
+
@guard_conditions << GuardCondition.new(name, condition, &blk)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def add_message(name, message)
|
|
45
|
+
@messages[name] = message
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def disposition
|
|
49
|
+
if !skipping_guard.nil?
|
|
50
|
+
[:skip, skipping_guard.message]
|
|
51
|
+
elsif !pending_guard.nil? && ENV['SKIP_PENDING']
|
|
52
|
+
[:skip, pending_guard.message]
|
|
53
|
+
elsif !pending_guard.nil?
|
|
54
|
+
[:pending, pending_guard.message]
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def satisfied?(guard)
|
|
59
|
+
@guard_conditions.all? { |condition| condition.satisfied?(guard) }
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
|
|
64
|
+
def collect_example_guards
|
|
65
|
+
guards = []
|
|
66
|
+
|
|
67
|
+
GUARD_TYPES.each do |guard_type|
|
|
68
|
+
example_group = @example.metadata[:example_group]
|
|
69
|
+
example_guards = [@example.metadata[guard_type], example_group[guard_type]]
|
|
70
|
+
while example_group[:parent_example_group]
|
|
71
|
+
example_group = example_group[:parent_example_group]
|
|
72
|
+
example_guards << example_group[guard_type]
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
example_guards.flatten.uniq.compact.each do |example_guard|
|
|
76
|
+
guards << Guard.new(example_guard, guard_type, self)
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
guards
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def skipping_guard
|
|
84
|
+
@guards.select(&:exclusive?).find { |guard| !satisfied?(guard) } ||
|
|
85
|
+
@guards.select(&:exclude?).find { |guard| satisfied?(guard) }
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def pending_guard
|
|
89
|
+
@guards.select(&:except?).find { |guard| satisfied?(guard) } ||
|
|
90
|
+
@guards.select(&:only?).find { |guard| !satisfied?(guard) }
|
|
91
|
+
end
|
|
92
|
+
end # Guards
|
|
93
|
+
end # Support
|
|
94
|
+
end # WebDriver
|
|
95
|
+
end # Selenium
|
|
@@ -0,0 +1,51 @@
|
|
|
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
|
+
module Support
|
|
23
|
+
|
|
24
|
+
#
|
|
25
|
+
# @api private
|
|
26
|
+
#
|
|
27
|
+
|
|
28
|
+
class RelativeLocator
|
|
29
|
+
KEYS = %w[above below left right near distance].freeze
|
|
30
|
+
|
|
31
|
+
def initialize(locator)
|
|
32
|
+
@filters, @root = locator.partition { |how, _| KEYS.include?(how) }.map(&:to_h)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def as_json
|
|
36
|
+
{
|
|
37
|
+
relative: {
|
|
38
|
+
root: @root,
|
|
39
|
+
filters: @filters.map do |kind, filter|
|
|
40
|
+
{
|
|
41
|
+
kind: kind,
|
|
42
|
+
args: [filter]
|
|
43
|
+
}
|
|
44
|
+
end
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -31,7 +31,7 @@ module Selenium
|
|
|
31
31
|
raise ArgumentError, "unexpected tag name #{tag_name.inspect}" unless tag_name.casecmp('select').zero?
|
|
32
32
|
|
|
33
33
|
@element = element
|
|
34
|
-
@multi = ![nil, 'false'].include?(element.
|
|
34
|
+
@multi = ![nil, 'false'].include?(element.dom_attribute(:multiple))
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
#
|
|
@@ -242,7 +242,7 @@ module Selenium
|
|
|
242
242
|
xpath = ".//option[normalize-space(.) = #{Escaper.escape text}]"
|
|
243
243
|
opts = @element.find_elements(xpath: xpath)
|
|
244
244
|
|
|
245
|
-
return opts unless opts.empty? &&
|
|
245
|
+
return opts unless opts.empty? && /\s+/.match?(text)
|
|
246
246
|
|
|
247
247
|
longest_word = text.split(/\s+/).max_by(&:length)
|
|
248
248
|
if longest_word.empty?
|
|
@@ -258,7 +258,7 @@ module Selenium
|
|
|
258
258
|
end
|
|
259
259
|
|
|
260
260
|
def find_by_index(index)
|
|
261
|
-
options.select { |option| option.
|
|
261
|
+
options.select { |option| option.property(:index) == index }
|
|
262
262
|
end
|
|
263
263
|
|
|
264
264
|
def find_by_value(value)
|
data/lib/selenium/webdriver.rb
CHANGED
|
@@ -23,9 +23,10 @@ require 'fileutils'
|
|
|
23
23
|
require 'date'
|
|
24
24
|
require 'json'
|
|
25
25
|
require 'set'
|
|
26
|
+
require 'uri'
|
|
26
27
|
|
|
27
|
-
require 'selenium/webdriver/common'
|
|
28
28
|
require 'selenium/webdriver/atoms'
|
|
29
|
+
require 'selenium/webdriver/common'
|
|
29
30
|
require 'selenium/webdriver/version'
|
|
30
31
|
|
|
31
32
|
module Selenium
|
|
@@ -35,14 +36,14 @@ module Selenium
|
|
|
35
36
|
Rectangle = Struct.new(:x, :y, :width, :height)
|
|
36
37
|
Location = Struct.new(:latitude, :longitude, :altitude)
|
|
37
38
|
|
|
38
|
-
autoload :Chrome,
|
|
39
|
-
autoload :
|
|
40
|
-
autoload :
|
|
41
|
-
autoload :
|
|
42
|
-
autoload :
|
|
43
|
-
autoload :Remote,
|
|
44
|
-
autoload :Safari,
|
|
45
|
-
autoload :Support,
|
|
39
|
+
autoload :Chrome, 'selenium/webdriver/chrome'
|
|
40
|
+
autoload :DevTools, 'selenium/webdriver/devtools'
|
|
41
|
+
autoload :Edge, 'selenium/webdriver/edge'
|
|
42
|
+
autoload :Firefox, 'selenium/webdriver/firefox'
|
|
43
|
+
autoload :IE, 'selenium/webdriver/ie'
|
|
44
|
+
autoload :Remote, 'selenium/webdriver/remote'
|
|
45
|
+
autoload :Safari, 'selenium/webdriver/safari'
|
|
46
|
+
autoload :Support, 'selenium/webdriver/support'
|
|
46
47
|
|
|
47
48
|
# @api private
|
|
48
49
|
|
|
@@ -54,10 +55,10 @@ module Selenium
|
|
|
54
55
|
# Create a new Driver instance with the correct bridge for the given browser
|
|
55
56
|
#
|
|
56
57
|
# @overload for(browser)
|
|
57
|
-
# @param [:ie, :internet_explorer, :edge, :remote, :chrome, :firefox, :ff, :
|
|
58
|
+
# @param [:ie, :internet_explorer, :edge, :remote, :chrome, :firefox, :ff, :safari] browser The browser to
|
|
58
59
|
# create the driver for
|
|
59
60
|
# @overload for(browser, opts)
|
|
60
|
-
# @param [:ie, :internet_explorer, :edge, :remote, :chrome, :firefox, :ff, :
|
|
61
|
+
# @param [:ie, :internet_explorer, :edge, :remote, :chrome, :firefox, :ff, :safari] browser The browser to
|
|
61
62
|
# create the driver for
|
|
62
63
|
# @param [Hash] opts Options passed to Driver.new
|
|
63
64
|
#
|
|
@@ -68,14 +69,13 @@ module Selenium
|
|
|
68
69
|
# @see Selenium::WebDriver::IE::Driver
|
|
69
70
|
# @see Selenium::WebDriver::Edge::Driver
|
|
70
71
|
# @see Selenium::WebDriver::Chrome::Driver
|
|
71
|
-
# @see Selenium::WebDriver::PhantomJS::Driver
|
|
72
72
|
# @see Selenium::WebDriver::Safari::Driver
|
|
73
73
|
#
|
|
74
74
|
# @example
|
|
75
75
|
#
|
|
76
76
|
# WebDriver.for :firefox, profile: 'some-profile'
|
|
77
77
|
# WebDriver.for :firefox, profile: Profile.new
|
|
78
|
-
# WebDriver.for :remote, url: "http://localhost:4444/wd/hub",
|
|
78
|
+
# WebDriver.for :remote, url: "http://localhost:4444/wd/hub", capabilities: caps
|
|
79
79
|
#
|
|
80
80
|
# One special argument is not passed on to the bridges, :listener.
|
|
81
81
|
# You can pass a listener for this option to get notified of WebDriver events.
|
data/selenium-webdriver.gemspec
CHANGED
|
@@ -11,37 +11,53 @@ Gem::Specification.new do |s|
|
|
|
11
11
|
s.version = Selenium::WebDriver::VERSION
|
|
12
12
|
|
|
13
13
|
s.authors = ['Alex Rodionov', 'Titus Fortner', 'Thomas Walpole']
|
|
14
|
-
s.email = [
|
|
14
|
+
s.email = %w[p0deje@gmail.com titusfortner@gmail.com twalpole@gmail.com]
|
|
15
15
|
|
|
16
|
-
s.summary = '
|
|
17
|
-
s.description =
|
|
18
|
-
|
|
19
|
-
|
|
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
|
|
20
22
|
|
|
21
23
|
s.license = 'Apache-2.0'
|
|
22
|
-
s.homepage = 'https://
|
|
24
|
+
s.homepage = 'https://selenium.dev'
|
|
23
25
|
s.metadata = {
|
|
24
|
-
'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/
|
|
25
|
-
'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/
|
|
26
|
+
'changelog_uri' => 'https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES',
|
|
27
|
+
'source_code_uri' => 'https://github.com/SeleniumHQ/selenium/tree/trunk/rb'
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version=
|
|
29
|
-
s.required_ruby_version = Gem::Requirement.new('>= 2.
|
|
31
|
+
s.required_ruby_version = Gem::Requirement.new('>= 2.6')
|
|
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/**/*']
|
|
30
44
|
|
|
31
|
-
s.files = Dir[root + '/**/*'].reject { |e| e =~ /ruby\.iml|build\.desc/ }.map { |e| e.sub(root + '/', '') }
|
|
32
45
|
s.require_paths = ['lib']
|
|
33
46
|
|
|
34
|
-
s.add_runtime_dependency 'childprocess', ['>= 0.5', '<
|
|
35
|
-
s.add_runtime_dependency '
|
|
47
|
+
s.add_runtime_dependency 'childprocess', ['>= 0.5', '< 5.0']
|
|
48
|
+
s.add_runtime_dependency 'rexml', ['~> 3.2', '>= 3.2.5']
|
|
49
|
+
s.add_runtime_dependency 'rubyzip', ['>= 1.2.2']
|
|
36
50
|
|
|
37
51
|
# childprocess requires ffi on windows but doesn't declare it in its dependencies
|
|
38
52
|
s.add_development_dependency 'ffi'
|
|
53
|
+
s.add_development_dependency 'pry', ['~> 0.14']
|
|
39
54
|
s.add_development_dependency 'rack', ['~> 2.0']
|
|
40
55
|
s.add_development_dependency 'rake'
|
|
41
56
|
s.add_development_dependency 'rspec', ['~> 3.0']
|
|
42
|
-
s.add_development_dependency 'rubocop', ['~>
|
|
57
|
+
s.add_development_dependency 'rubocop', ['~> 1.8.0']
|
|
43
58
|
s.add_development_dependency 'rubocop-performance'
|
|
44
59
|
s.add_development_dependency 'rubocop-rspec'
|
|
45
60
|
s.add_development_dependency 'webmock', ['~> 3.5']
|
|
61
|
+
s.add_development_dependency 'webrick', ['~> 1.7']
|
|
46
62
|
s.add_development_dependency 'yard', ['~> 0.9.11']
|
|
47
63
|
end
|