selenium-webdriver 2.53.4 → 3.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|