selenium-webdriver 2.53.4 → 3.8.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 +7 -0
- data/CHANGES +363 -10
- data/LICENSE +1 -1
- data/README.md +2 -3
- data/lib/selenium-webdriver.rb +0 -2
- data/lib/selenium/server.rb +69 -70
- data/lib/selenium/webdriver.rb +32 -23
- data/lib/selenium/webdriver/atoms.rb +18 -0
- data/lib/selenium/webdriver/atoms/getAttribute.js +8 -0
- data/lib/selenium/webdriver/chrome.rb +8 -6
- data/lib/selenium/webdriver/chrome/driver.rb +112 -0
- data/lib/selenium/webdriver/chrome/options.rb +168 -0
- data/lib/selenium/webdriver/chrome/profile.rb +17 -17
- data/lib/selenium/webdriver/chrome/service.rb +22 -89
- data/lib/selenium/webdriver/common.rb +13 -6
- data/lib/selenium/webdriver/common/action_builder.rb +49 -57
- data/lib/selenium/webdriver/common/alert.rb +5 -15
- data/lib/selenium/webdriver/common/bridge_helper.rb +10 -17
- data/lib/selenium/webdriver/common/driver.rb +53 -68
- data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_addons.rb} +13 -23
- data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +4 -8
- data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +4 -7
- data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +0 -4
- data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +0 -4
- data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +1 -5
- data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +0 -5
- data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +4 -9
- data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +7 -7
- data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +2 -7
- data/lib/selenium/webdriver/common/element.rb +57 -39
- data/lib/selenium/webdriver/common/error.rb +204 -106
- data/lib/selenium/webdriver/common/file_reaper.rb +3 -11
- data/lib/selenium/webdriver/common/html5/local_storage.rb +6 -10
- data/lib/selenium/webdriver/common/html5/session_storage.rb +6 -10
- data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +7 -18
- data/lib/selenium/webdriver/{safari/options.rb → common/interactions/input_device.rb} +20 -31
- data/lib/selenium/webdriver/common/interactions/interaction.rb +50 -0
- data/lib/selenium/webdriver/{safari/browser.rb → common/interactions/interactions.rb} +16 -15
- data/lib/selenium/webdriver/common/interactions/key_actions.rb +143 -0
- data/lib/selenium/webdriver/common/interactions/key_input.rb +62 -0
- data/lib/selenium/webdriver/{android.rb → common/interactions/none_input.rb} +11 -6
- data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +353 -0
- data/lib/selenium/webdriver/common/interactions/pointer_input.rb +132 -0
- data/lib/selenium/webdriver/common/keyboard.rb +7 -14
- data/lib/selenium/webdriver/common/keys.rb +99 -82
- data/lib/selenium/webdriver/common/log_entry.rb +3 -6
- data/lib/selenium/webdriver/common/logger.rb +140 -0
- data/lib/selenium/webdriver/common/logs.rb +2 -6
- data/lib/selenium/webdriver/common/mouse.rb +9 -14
- data/lib/selenium/webdriver/common/navigation.rb +2 -6
- data/lib/selenium/webdriver/common/options.rb +20 -23
- data/lib/selenium/webdriver/common/platform.rb +70 -97
- data/lib/selenium/webdriver/common/port_prober.rb +3 -4
- data/lib/selenium/webdriver/common/profile_helper.rb +6 -11
- data/lib/selenium/webdriver/common/proxy.rb +58 -72
- data/lib/selenium/webdriver/common/search_context.rb +22 -29
- data/lib/selenium/webdriver/common/service.rb +161 -0
- data/lib/selenium/webdriver/common/socket_lock.rb +6 -14
- data/lib/selenium/webdriver/common/socket_poller.rb +5 -12
- data/lib/selenium/webdriver/common/target_locator.rb +11 -15
- data/lib/selenium/webdriver/common/timeouts.rb +4 -8
- data/lib/selenium/webdriver/common/touch_action_builder.rb +2 -6
- data/lib/selenium/webdriver/common/touch_screen.rb +19 -23
- data/lib/selenium/webdriver/common/w3c_action_builder.rb +209 -0
- data/lib/selenium/webdriver/{phantomjs.rb → common/w3c_options.rb} +16 -14
- data/lib/selenium/webdriver/common/wait.rb +6 -13
- data/lib/selenium/webdriver/common/window.rb +48 -17
- data/lib/selenium/webdriver/common/zipper.rb +6 -10
- data/lib/selenium/webdriver/edge.rb +5 -12
- data/lib/selenium/webdriver/edge/bridge.rb +32 -63
- data/lib/selenium/webdriver/edge/driver.rb +73 -0
- data/lib/selenium/webdriver/edge/service.rb +18 -87
- data/lib/selenium/webdriver/firefox.rb +20 -11
- data/lib/selenium/webdriver/firefox/binary.rb +40 -56
- data/lib/selenium/webdriver/firefox/driver.rb +48 -0
- data/lib/selenium/webdriver/firefox/extension.rb +18 -8
- data/lib/selenium/webdriver/firefox/extension/prefs.json +3 -11
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/launcher.rb +13 -22
- data/lib/selenium/webdriver/firefox/legacy/driver.rb +79 -0
- data/lib/selenium/webdriver/{iphone.rb → firefox/marionette/bridge.rb} +25 -6
- data/lib/selenium/webdriver/firefox/marionette/driver.rb +96 -0
- data/lib/selenium/webdriver/firefox/options.rb +149 -0
- data/lib/selenium/webdriver/firefox/profile.rb +46 -46
- data/lib/selenium/webdriver/firefox/profiles_ini.rb +8 -18
- data/lib/selenium/webdriver/firefox/service.rb +23 -83
- data/lib/selenium/webdriver/firefox/util.rb +0 -4
- data/lib/selenium/webdriver/ie.rb +4 -8
- data/lib/selenium/webdriver/ie/driver.rb +90 -0
- data/lib/selenium/webdriver/ie/options.rb +136 -0
- data/lib/selenium/webdriver/ie/service.rb +58 -0
- data/lib/selenium/webdriver/remote.rb +8 -16
- data/lib/selenium/webdriver/remote/bridge.rb +96 -565
- data/lib/selenium/webdriver/remote/capabilities.rb +76 -94
- data/lib/selenium/webdriver/remote/driver.rb +49 -0
- data/lib/selenium/webdriver/remote/http/common.rb +22 -20
- data/lib/selenium/webdriver/remote/http/curb.rb +9 -12
- data/lib/selenium/webdriver/remote/http/default.rb +54 -41
- data/lib/selenium/webdriver/remote/http/persistent.rb +9 -8
- data/lib/selenium/webdriver/remote/oss/bridge.rb +586 -0
- data/lib/selenium/webdriver/remote/oss/commands.rb +221 -0
- data/lib/selenium/webdriver/remote/response.rb +39 -27
- data/lib/selenium/webdriver/remote/server_error.rb +1 -5
- data/lib/selenium/webdriver/remote/w3c/bridge.rb +573 -0
- data/lib/selenium/webdriver/remote/w3c/capabilities.rb +290 -0
- data/lib/selenium/webdriver/remote/w3c/commands.rb +148 -0
- data/lib/selenium/webdriver/safari.rb +20 -29
- data/lib/selenium/webdriver/{firefox/w3c_bridge.rb → safari/driver.rb} +21 -30
- data/lib/selenium/webdriver/safari/service.rb +57 -0
- data/lib/selenium/webdriver/support.rb +1 -2
- data/lib/selenium/webdriver/support/abstract_event_listener.rb +17 -4
- data/lib/selenium/webdriver/support/block_event_listener.rb +1 -5
- data/lib/selenium/webdriver/support/color.rb +57 -42
- data/lib/selenium/webdriver/support/escaper.rb +41 -0
- data/lib/selenium/webdriver/support/event_firing_bridge.rb +36 -40
- data/lib/selenium/webdriver/support/select.rb +33 -86
- data/selenium-webdriver.gemspec +22 -25
- metadata +254 -261
- data/lib/selenium-client.rb +0 -21
- data/lib/selenium/client.rb +0 -57
- data/lib/selenium/client/base.rb +0 -151
- data/lib/selenium/client/driver.rb +0 -29
- data/lib/selenium/client/errors.rb +0 -28
- data/lib/selenium/client/extensions.rb +0 -132
- data/lib/selenium/client/idiomatic.rb +0 -507
- data/lib/selenium/client/javascript_expression_builder.rb +0 -135
- data/lib/selenium/client/javascript_frameworks/jquery.rb +0 -32
- data/lib/selenium/client/javascript_frameworks/prototype.rb +0 -32
- data/lib/selenium/client/legacy_driver.rb +0 -1722
- data/lib/selenium/client/protocol.rb +0 -123
- data/lib/selenium/client/selenium_helper.rb +0 -49
- data/lib/selenium/rake/server_task.rb +0 -176
- data/lib/selenium/webdriver/android/bridge.rb +0 -68
- data/lib/selenium/webdriver/chrome/bridge.rb +0 -139
- data/lib/selenium/webdriver/common/core_ext/base64.rb +0 -28
- data/lib/selenium/webdriver/common/core_ext/dir.rb +0 -61
- data/lib/selenium/webdriver/common/html5/location.rb +0 -19
- data/lib/selenium/webdriver/common/w3c_error.rb +0 -194
- data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
- data/lib/selenium/webdriver/firefox/bridge.rb +0 -89
- data/lib/selenium/webdriver/ie/bridge.rb +0 -88
- data/lib/selenium/webdriver/ie/server.rb +0 -133
- data/lib/selenium/webdriver/iphone/bridge.rb +0 -64
- data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -78
- data/lib/selenium/webdriver/phantomjs/service.rb +0 -130
- data/lib/selenium/webdriver/remote/commands.rb +0 -211
- data/lib/selenium/webdriver/remote/w3c_bridge.rb +0 -668
- data/lib/selenium/webdriver/remote/w3c_capabilities.rb +0 -236
- data/lib/selenium/webdriver/remote/w3c_commands.rb +0 -132
- data/lib/selenium/webdriver/safari/bridge.rb +0 -135
- data/lib/selenium/webdriver/safari/resources/client.js +0 -7255
- data/lib/selenium/webdriver/safari/server.rb +0 -187
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -22,7 +20,7 @@ module Selenium
|
|
|
22
20
|
module DriverExtensions
|
|
23
21
|
module HasNetworkConnection
|
|
24
22
|
def network_connection_type
|
|
25
|
-
connection_value = @bridge.
|
|
23
|
+
connection_value = @bridge.network_connection
|
|
26
24
|
|
|
27
25
|
connection_type = values_to_type[connection_value]
|
|
28
26
|
|
|
@@ -32,17 +30,17 @@ module Selenium
|
|
|
32
30
|
end
|
|
33
31
|
|
|
34
32
|
def network_connection_type=(connection_type)
|
|
35
|
-
raise ArgumentError,
|
|
33
|
+
raise ArgumentError, 'Invalid connection type' unless valid_type? connection_type
|
|
36
34
|
|
|
37
35
|
connection_value = type_to_values[connection_type]
|
|
38
36
|
|
|
39
|
-
@bridge.
|
|
37
|
+
@bridge.network_connection = connection_value
|
|
40
38
|
end
|
|
41
39
|
|
|
42
40
|
private
|
|
43
41
|
|
|
44
42
|
def type_to_values
|
|
45
|
-
{:
|
|
43
|
+
{airplane_mode: 1, wifi: 2, data: 4, all: 6, none: 0}
|
|
46
44
|
end
|
|
47
45
|
|
|
48
46
|
def values_to_type
|
|
@@ -52,7 +50,6 @@ module Selenium
|
|
|
52
50
|
def valid_type?(type)
|
|
53
51
|
type_to_values.keys.include? type
|
|
54
52
|
end
|
|
55
|
-
|
|
56
53
|
end # HasNetworkConnection
|
|
57
54
|
end # DriverExtensions
|
|
58
55
|
end # WebDriver
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -21,11 +19,9 @@ module Selenium
|
|
|
21
19
|
module WebDriver
|
|
22
20
|
module DriverExtensions
|
|
23
21
|
module HasRemoteStatus
|
|
24
|
-
|
|
25
22
|
def remote_status
|
|
26
23
|
@bridge.status
|
|
27
24
|
end
|
|
28
|
-
|
|
29
25
|
end # HasRemoteStatus
|
|
30
26
|
end # DriverExtensions
|
|
31
27
|
end # WebDriver
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -19,14 +17,12 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
20
|
#
|
|
24
21
|
# @api private
|
|
25
22
|
#
|
|
26
23
|
|
|
27
24
|
module DriverExtensions
|
|
28
25
|
module HasSessionId
|
|
29
|
-
|
|
30
26
|
#
|
|
31
27
|
# @return [String] the session id
|
|
32
28
|
# @api public
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -20,10 +18,9 @@
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
20
|
module DriverExtensions
|
|
23
|
-
|
|
24
21
|
module HasTouchScreen
|
|
25
22
|
def touch
|
|
26
|
-
TouchActionBuilder.new
|
|
23
|
+
TouchActionBuilder.new Mouse.new(@bridge), Keyboard.new(@bridge), touch_screen
|
|
27
24
|
end
|
|
28
25
|
|
|
29
26
|
private
|
|
@@ -31,7 +28,6 @@ module Selenium
|
|
|
31
28
|
def touch_screen
|
|
32
29
|
TouchScreen.new @bridge
|
|
33
30
|
end
|
|
34
|
-
|
|
35
31
|
end # HasTouchScreen
|
|
36
32
|
end # DriverExtensions
|
|
37
33
|
end # WebDriver
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -19,14 +17,12 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
20
|
#
|
|
24
21
|
# @api private
|
|
25
22
|
#
|
|
26
23
|
|
|
27
24
|
module DriverExtensions
|
|
28
25
|
module HasWebStorage
|
|
29
|
-
|
|
30
26
|
def local_storage
|
|
31
27
|
HTML5::LocalStorage.new @bridge
|
|
32
28
|
end
|
|
@@ -34,7 +30,6 @@ module Selenium
|
|
|
34
30
|
def session_storage
|
|
35
31
|
HTML5::SessionStorage.new @bridge
|
|
36
32
|
end
|
|
37
|
-
|
|
38
33
|
end # HasWebStorage
|
|
39
34
|
end # DriverExtensions
|
|
40
35
|
end # WebDriver
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -19,20 +17,18 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
20
|
#
|
|
24
21
|
# @api private
|
|
25
22
|
#
|
|
26
23
|
|
|
27
24
|
module DriverExtensions
|
|
28
25
|
module Rotatable
|
|
29
|
-
|
|
30
|
-
ORIENTATIONS = [:landscape, :portrait]
|
|
26
|
+
ORIENTATIONS = [:landscape, :portrait].freeze
|
|
31
27
|
|
|
32
28
|
#
|
|
33
29
|
# Change the screen orientation
|
|
34
30
|
#
|
|
35
|
-
# @param [:landscape, :portrait]
|
|
31
|
+
# @param [:landscape, :portrait] orientation
|
|
36
32
|
#
|
|
37
33
|
# @api public
|
|
38
34
|
#
|
|
@@ -42,7 +38,7 @@ module Selenium
|
|
|
42
38
|
raise ArgumentError, "expected #{ORIENTATIONS.inspect}, got #{orientation.inspect}"
|
|
43
39
|
end
|
|
44
40
|
|
|
45
|
-
bridge.
|
|
41
|
+
bridge.screen_orientation = orientation.to_s.upcase
|
|
46
42
|
end
|
|
47
43
|
alias_method :rotate, :rotation=
|
|
48
44
|
|
|
@@ -55,9 +51,8 @@ module Selenium
|
|
|
55
51
|
#
|
|
56
52
|
|
|
57
53
|
def orientation
|
|
58
|
-
bridge.
|
|
54
|
+
bridge.screen_orientation.to_sym.downcase
|
|
59
55
|
end
|
|
60
|
-
|
|
61
56
|
end # Rotatable
|
|
62
57
|
end # DriverExtensions
|
|
63
58
|
end # WebDriver
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -19,14 +17,12 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
20
|
#
|
|
24
21
|
# @api private
|
|
25
22
|
#
|
|
26
23
|
|
|
27
24
|
module DriverExtensions
|
|
28
25
|
module TakesScreenshot
|
|
29
|
-
|
|
30
26
|
#
|
|
31
27
|
# Save a PNG screenshot to the given path
|
|
32
28
|
#
|
|
@@ -34,6 +30,11 @@ module Selenium
|
|
|
34
30
|
#
|
|
35
31
|
|
|
36
32
|
def save_screenshot(png_path)
|
|
33
|
+
extension = File.extname(png_path).downcase
|
|
34
|
+
if extension != '.png'
|
|
35
|
+
WebDriver.logger.warn "name used for saved screenshot does not match file type. "\
|
|
36
|
+
"It should end with .png extension"
|
|
37
|
+
end
|
|
37
38
|
File.open(png_path, 'wb') { |f| f << screenshot_as(:png) }
|
|
38
39
|
end
|
|
39
40
|
|
|
@@ -48,14 +49,13 @@ module Selenium
|
|
|
48
49
|
def screenshot_as(format)
|
|
49
50
|
case format
|
|
50
51
|
when :base64
|
|
51
|
-
bridge.
|
|
52
|
+
bridge.screenshot
|
|
52
53
|
when :png
|
|
53
|
-
bridge.
|
|
54
|
+
bridge.screenshot.unpack('m')[0]
|
|
54
55
|
else
|
|
55
56
|
raise Error::UnsupportedOperationError, "unsupported format: #{format.inspect}"
|
|
56
57
|
end
|
|
57
58
|
end
|
|
58
|
-
|
|
59
59
|
end # TakesScreenshot
|
|
60
60
|
end # DriverExtensions
|
|
61
61
|
end # WebDriver
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -19,14 +17,12 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
20
|
#
|
|
24
21
|
# @api private
|
|
25
22
|
#
|
|
26
23
|
|
|
27
24
|
module DriverExtensions
|
|
28
25
|
module UploadsFiles
|
|
29
|
-
|
|
30
26
|
#
|
|
31
27
|
# Set the file detector to pass local files to a remote WebDriver.
|
|
32
28
|
#
|
|
@@ -52,13 +48,12 @@ module Selenium
|
|
|
52
48
|
#
|
|
53
49
|
|
|
54
50
|
def file_detector=(detector)
|
|
55
|
-
unless detector.nil?
|
|
56
|
-
raise ArgumentError,
|
|
51
|
+
unless detector.nil? || detector.respond_to?(:call)
|
|
52
|
+
raise ArgumentError, 'detector must respond to #call'
|
|
57
53
|
end
|
|
58
54
|
|
|
59
55
|
bridge.file_detector = detector
|
|
60
56
|
end
|
|
61
|
-
|
|
62
57
|
end # UploadsFiles
|
|
63
58
|
end # DriverExtensions
|
|
64
59
|
end # WebDriver
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# encoding: utf-8
|
|
2
|
-
#
|
|
3
1
|
# Licensed to the Software Freedom Conservancy (SFC) under one
|
|
4
2
|
# or more contributor license agreements. See the NOTICE file
|
|
5
3
|
# distributed with this work for additional information
|
|
@@ -29,15 +27,16 @@ module Selenium
|
|
|
29
27
|
#
|
|
30
28
|
|
|
31
29
|
def initialize(bridge, id)
|
|
32
|
-
@bridge
|
|
30
|
+
@bridge = bridge
|
|
31
|
+
@id = id
|
|
33
32
|
end
|
|
34
33
|
|
|
35
34
|
def inspect
|
|
36
|
-
'#<%s:0x%x id=%s>'
|
|
35
|
+
format '#<%s:0x%x id=%s>', self.class, hash * 2, @id.inspect
|
|
37
36
|
end
|
|
38
37
|
|
|
39
38
|
def ==(other)
|
|
40
|
-
other.
|
|
39
|
+
other.is_a?(self.class) && ref == other.ref
|
|
41
40
|
end
|
|
42
41
|
alias_method :eql?, :==
|
|
43
42
|
|
|
@@ -63,14 +62,14 @@ module Selenium
|
|
|
63
62
|
#
|
|
64
63
|
# @example Click on a button
|
|
65
64
|
#
|
|
66
|
-
# driver.find_element(:
|
|
65
|
+
# driver.find_element(tag_name: "button").click
|
|
67
66
|
#
|
|
68
67
|
# @raise [StaleElementReferenceError] if the element no longer exists as
|
|
69
68
|
# defined
|
|
70
69
|
#
|
|
71
70
|
|
|
72
71
|
def click
|
|
73
|
-
bridge.
|
|
72
|
+
bridge.click_element @id
|
|
74
73
|
end
|
|
75
74
|
|
|
76
75
|
#
|
|
@@ -78,13 +77,13 @@ module Selenium
|
|
|
78
77
|
#
|
|
79
78
|
# @example Get the tagname of an INPUT element(returns "input")
|
|
80
79
|
#
|
|
81
|
-
# driver.find_element(:
|
|
80
|
+
# driver.find_element(xpath: "//input").tag_name
|
|
82
81
|
#
|
|
83
82
|
# @return [String] The tag name of this element.
|
|
84
83
|
#
|
|
85
84
|
|
|
86
85
|
def tag_name
|
|
87
|
-
bridge.
|
|
86
|
+
bridge.element_tag_name @id
|
|
88
87
|
end
|
|
89
88
|
|
|
90
89
|
#
|
|
@@ -107,14 +106,24 @@ module Selenium
|
|
|
107
106
|
#
|
|
108
107
|
# class, readonly
|
|
109
108
|
#
|
|
110
|
-
# @param [String]
|
|
111
|
-
#
|
|
112
|
-
# @return [String,nil]
|
|
113
|
-
# attribute value
|
|
109
|
+
# @param [String] name attribute name
|
|
110
|
+
# @return [String, nil] attribute value
|
|
114
111
|
#
|
|
115
112
|
|
|
116
113
|
def attribute(name)
|
|
117
|
-
bridge.
|
|
114
|
+
bridge.element_attribute self, name
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
#
|
|
118
|
+
# Get the value of a the given property with the same name of the element. If the value is not
|
|
119
|
+
# set, nil is returned.
|
|
120
|
+
#
|
|
121
|
+
# @param [String] name property name
|
|
122
|
+
# @return [String, nil] property value
|
|
123
|
+
#
|
|
124
|
+
|
|
125
|
+
def property(name)
|
|
126
|
+
bridge.element_property self, name
|
|
118
127
|
end
|
|
119
128
|
|
|
120
129
|
#
|
|
@@ -124,13 +133,13 @@ module Selenium
|
|
|
124
133
|
#
|
|
125
134
|
|
|
126
135
|
def text
|
|
127
|
-
bridge.
|
|
136
|
+
bridge.element_text @id
|
|
128
137
|
end
|
|
129
138
|
|
|
130
139
|
#
|
|
131
140
|
# Send keystrokes to this element
|
|
132
141
|
#
|
|
133
|
-
# @param [String, Symbol, Array]
|
|
142
|
+
# @param [String, Symbol, Array] args keystrokes to send
|
|
134
143
|
#
|
|
135
144
|
# Examples:
|
|
136
145
|
#
|
|
@@ -142,7 +151,7 @@ module Selenium
|
|
|
142
151
|
#
|
|
143
152
|
|
|
144
153
|
def send_keys(*args)
|
|
145
|
-
bridge.
|
|
154
|
+
bridge.send_keys_to_element @id, Keys.encode(args)
|
|
146
155
|
end
|
|
147
156
|
alias_method :send_key, :send_keys
|
|
148
157
|
|
|
@@ -157,7 +166,7 @@ module Selenium
|
|
|
157
166
|
#
|
|
158
167
|
|
|
159
168
|
def clear
|
|
160
|
-
bridge.
|
|
169
|
+
bridge.clear_element @id
|
|
161
170
|
end
|
|
162
171
|
|
|
163
172
|
#
|
|
@@ -167,7 +176,7 @@ module Selenium
|
|
|
167
176
|
#
|
|
168
177
|
|
|
169
178
|
def enabled?
|
|
170
|
-
bridge.
|
|
179
|
+
bridge.element_enabled? @id
|
|
171
180
|
end
|
|
172
181
|
|
|
173
182
|
#
|
|
@@ -177,7 +186,7 @@ module Selenium
|
|
|
177
186
|
#
|
|
178
187
|
|
|
179
188
|
def selected?
|
|
180
|
-
bridge.
|
|
189
|
+
bridge.element_selected? @id
|
|
181
190
|
end
|
|
182
191
|
|
|
183
192
|
#
|
|
@@ -187,7 +196,7 @@ module Selenium
|
|
|
187
196
|
#
|
|
188
197
|
|
|
189
198
|
def displayed?
|
|
190
|
-
bridge.
|
|
199
|
+
bridge.element_displayed? @id
|
|
191
200
|
end
|
|
192
201
|
|
|
193
202
|
#
|
|
@@ -195,7 +204,7 @@ module Selenium
|
|
|
195
204
|
#
|
|
196
205
|
|
|
197
206
|
def submit
|
|
198
|
-
bridge.
|
|
207
|
+
bridge.submit_element @id
|
|
199
208
|
end
|
|
200
209
|
|
|
201
210
|
#
|
|
@@ -210,7 +219,7 @@ module Selenium
|
|
|
210
219
|
#
|
|
211
220
|
|
|
212
221
|
def css_value(prop)
|
|
213
|
-
bridge.
|
|
222
|
+
bridge.element_value_of_css_property @id, prop
|
|
214
223
|
end
|
|
215
224
|
alias_method :style, :css_value
|
|
216
225
|
|
|
@@ -221,7 +230,17 @@ module Selenium
|
|
|
221
230
|
#
|
|
222
231
|
|
|
223
232
|
def location
|
|
224
|
-
bridge.
|
|
233
|
+
bridge.element_location @id
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
#
|
|
237
|
+
# Get the dimensions and coordinates of this element.
|
|
238
|
+
#
|
|
239
|
+
# @return [WebDriver::Rectangle]
|
|
240
|
+
#
|
|
241
|
+
|
|
242
|
+
def rect
|
|
243
|
+
bridge.element_rect @id
|
|
225
244
|
end
|
|
226
245
|
|
|
227
246
|
#
|
|
@@ -231,7 +250,7 @@ module Selenium
|
|
|
231
250
|
#
|
|
232
251
|
|
|
233
252
|
def location_once_scrolled_into_view
|
|
234
|
-
bridge.
|
|
253
|
+
bridge.element_location_once_scrolled_into_view @id
|
|
235
254
|
end
|
|
236
255
|
|
|
237
256
|
#
|
|
@@ -241,19 +260,19 @@ module Selenium
|
|
|
241
260
|
#
|
|
242
261
|
|
|
243
262
|
def size
|
|
244
|
-
bridge.
|
|
263
|
+
bridge.element_size @id
|
|
245
264
|
end
|
|
246
265
|
|
|
247
266
|
#-------------------------------- sugar --------------------------------
|
|
248
267
|
|
|
249
268
|
#
|
|
250
|
-
# element.first(:
|
|
269
|
+
# element.first(id: 'foo')
|
|
251
270
|
#
|
|
252
271
|
|
|
253
272
|
alias_method :first, :find_element
|
|
254
273
|
|
|
255
274
|
#
|
|
256
|
-
# element.all(:
|
|
275
|
+
# element.all(class: 'bar')
|
|
257
276
|
#
|
|
258
277
|
|
|
259
278
|
alias_method :all, :find_elements
|
|
@@ -280,7 +299,7 @@ module Selenium
|
|
|
280
299
|
# @api private
|
|
281
300
|
#
|
|
282
301
|
|
|
283
|
-
def to_json(*
|
|
302
|
+
def to_json(*)
|
|
284
303
|
JSON.generate as_json
|
|
285
304
|
end
|
|
286
305
|
|
|
@@ -290,26 +309,25 @@ module Selenium
|
|
|
290
309
|
# @api private
|
|
291
310
|
#
|
|
292
311
|
|
|
293
|
-
def as_json(
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
312
|
+
def as_json(*)
|
|
313
|
+
key = if bridge.dialect == :w3c
|
|
314
|
+
'element-6066-11e4-a52e-4f735466cecf'
|
|
315
|
+
else
|
|
316
|
+
'ELEMENT'
|
|
317
|
+
end
|
|
318
|
+
@id.is_a?(Hash) ? @id : {key => @id}
|
|
298
319
|
end
|
|
299
320
|
|
|
300
321
|
private
|
|
301
322
|
|
|
302
|
-
|
|
303
|
-
@bridge
|
|
304
|
-
end
|
|
323
|
+
attr_reader :bridge
|
|
305
324
|
|
|
306
325
|
def selectable?
|
|
307
326
|
tn = tag_name.downcase
|
|
308
327
|
type = attribute(:type).to_s.downcase
|
|
309
328
|
|
|
310
|
-
tn ==
|
|
329
|
+
tn == 'option' || (tn == 'input' && %w[radio checkbox].include?(type))
|
|
311
330
|
end
|
|
312
|
-
|
|
313
331
|
end # Element
|
|
314
332
|
end # WebDriver
|
|
315
333
|
end # Selenium
|