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
|
|
@@ -20,36 +18,28 @@
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
20
|
class Alert
|
|
23
|
-
|
|
24
21
|
def initialize(bridge)
|
|
25
22
|
@bridge = bridge
|
|
26
23
|
|
|
27
24
|
# fail fast if the alert doesn't exist
|
|
28
|
-
bridge.
|
|
25
|
+
bridge.alert_text
|
|
29
26
|
end
|
|
30
27
|
|
|
31
28
|
def accept
|
|
32
|
-
@bridge.
|
|
29
|
+
@bridge.accept_alert
|
|
33
30
|
end
|
|
34
31
|
|
|
35
32
|
def dismiss
|
|
36
|
-
@bridge.
|
|
33
|
+
@bridge.dismiss_alert
|
|
37
34
|
end
|
|
38
35
|
|
|
39
36
|
def send_keys(keys)
|
|
40
|
-
@bridge.
|
|
37
|
+
@bridge.alert = keys
|
|
41
38
|
end
|
|
42
39
|
|
|
43
40
|
def text
|
|
44
|
-
@bridge.
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def authenticate(username, password)
|
|
48
|
-
@bridge.setAuthentication username: username, password: password
|
|
49
|
-
accept
|
|
41
|
+
@bridge.alert_text
|
|
50
42
|
end
|
|
51
|
-
|
|
52
43
|
end # Alert
|
|
53
44
|
end # WebDriver
|
|
54
45
|
end # Selenium
|
|
55
|
-
|
|
@@ -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,7 +17,6 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
20
|
#
|
|
24
21
|
# Shared across bridges
|
|
25
22
|
#
|
|
@@ -27,24 +24,21 @@ module Selenium
|
|
|
27
24
|
#
|
|
28
25
|
|
|
29
26
|
module BridgeHelper
|
|
30
|
-
|
|
31
27
|
def unwrap_script_result(arg)
|
|
32
28
|
case arg
|
|
33
29
|
when Array
|
|
34
30
|
arg.map { |e| unwrap_script_result(e) }
|
|
35
31
|
when Hash
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
arg.each { |k, v| arg[k] = unwrap_script_result(v) }
|
|
40
|
-
end
|
|
32
|
+
element_id = element_id_from(arg)
|
|
33
|
+
return Element.new(self, element_id) if element_id
|
|
34
|
+
arg.each { |k, v| arg[k] = unwrap_script_result(v) }
|
|
41
35
|
else
|
|
42
36
|
arg
|
|
43
37
|
end
|
|
44
38
|
end
|
|
45
39
|
|
|
46
40
|
def element_id_from(id)
|
|
47
|
-
id['ELEMENT']
|
|
41
|
+
id['ELEMENT'] || id['element-6066-11e4-a52e-4f735466cecf']
|
|
48
42
|
end
|
|
49
43
|
|
|
50
44
|
def parse_cookie_string(str)
|
|
@@ -57,22 +51,22 @@ module Selenium
|
|
|
57
51
|
'secure' => false
|
|
58
52
|
}
|
|
59
53
|
|
|
60
|
-
str.split(
|
|
61
|
-
if attribute.include?
|
|
62
|
-
key, value = attribute.strip.split(
|
|
54
|
+
str.split(';').each do |attribute|
|
|
55
|
+
if attribute.include? '='
|
|
56
|
+
key, value = attribute.strip.split('=', 2)
|
|
63
57
|
if result['name'].empty?
|
|
64
58
|
result['name'] = key
|
|
65
59
|
result['value'] = value
|
|
66
60
|
elsif key == 'domain' && value.strip =~ /^\.(.+)/
|
|
67
|
-
result['domain'] =
|
|
61
|
+
result['domain'] = Regexp.last_match(1)
|
|
68
62
|
elsif key && value
|
|
69
63
|
result[key] = value
|
|
70
64
|
end
|
|
71
|
-
elsif attribute ==
|
|
65
|
+
elsif attribute == 'secure'
|
|
72
66
|
result['secure'] = true
|
|
73
67
|
end
|
|
74
68
|
|
|
75
|
-
unless [nil,
|
|
69
|
+
unless [nil, '', '0'].include?(result['expires'])
|
|
76
70
|
# firefox stores expiry as number of seconds
|
|
77
71
|
result['expires'] = Time.at(result['expires'].to_i)
|
|
78
72
|
end
|
|
@@ -80,7 +74,6 @@ module Selenium
|
|
|
80
74
|
|
|
81
75
|
result
|
|
82
76
|
end
|
|
83
|
-
|
|
84
77
|
end # BridgeHelper
|
|
85
78
|
end # WebDriver
|
|
86
79
|
end # Selenium
|
|
@@ -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,7 +17,6 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
20
|
#
|
|
24
21
|
# The main class through which you control the browser.
|
|
25
22
|
#
|
|
@@ -33,7 +30,6 @@ module Selenium
|
|
|
33
30
|
include SearchContext
|
|
34
31
|
|
|
35
32
|
class << self
|
|
36
|
-
|
|
37
33
|
#
|
|
38
34
|
# @api private
|
|
39
35
|
#
|
|
@@ -43,42 +39,24 @@ module Selenium
|
|
|
43
39
|
#
|
|
44
40
|
|
|
45
41
|
def for(browser, opts = {})
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
Chrome::Bridge.new(opts)
|
|
65
|
-
when :edge
|
|
66
|
-
Edge::Bridge.new(opts)
|
|
67
|
-
when :android
|
|
68
|
-
Android::Bridge.new(opts)
|
|
69
|
-
when :iphone
|
|
70
|
-
IPhone::Bridge.new(opts)
|
|
71
|
-
when :phantomjs
|
|
72
|
-
PhantomJS::Bridge.new(opts)
|
|
73
|
-
when :safari
|
|
74
|
-
Safari::Bridge.new(opts)
|
|
75
|
-
else
|
|
76
|
-
raise ArgumentError, "unknown driver: #{browser.inspect}"
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
bridge = Support::EventFiringBridge.new(bridge, listener) if listener
|
|
80
|
-
|
|
81
|
-
new(bridge)
|
|
42
|
+
case browser
|
|
43
|
+
when :chrome
|
|
44
|
+
Chrome::Driver.new(opts)
|
|
45
|
+
when :internet_explorer, :ie
|
|
46
|
+
IE::Driver.new(opts)
|
|
47
|
+
when :safari
|
|
48
|
+
Safari::Driver.new(opts)
|
|
49
|
+
when :phantomjs
|
|
50
|
+
PhantomJS::Driver.new(opts)
|
|
51
|
+
when :firefox, :ff
|
|
52
|
+
Firefox::Driver.new(opts)
|
|
53
|
+
when :edge
|
|
54
|
+
Edge::Driver.new(opts)
|
|
55
|
+
when :remote
|
|
56
|
+
Remote::Driver.new(opts)
|
|
57
|
+
else
|
|
58
|
+
raise ArgumentError, "unknown driver: #{browser.inspect}"
|
|
59
|
+
end
|
|
82
60
|
end
|
|
83
61
|
end
|
|
84
62
|
|
|
@@ -89,17 +67,13 @@ module Selenium
|
|
|
89
67
|
# @api private
|
|
90
68
|
#
|
|
91
69
|
|
|
92
|
-
def initialize(bridge)
|
|
70
|
+
def initialize(bridge, listener: nil)
|
|
93
71
|
@bridge = bridge
|
|
94
|
-
|
|
95
|
-
# TODO: refactor this away
|
|
96
|
-
unless bridge.driver_extensions.empty?
|
|
97
|
-
extend(*bridge.driver_extensions)
|
|
98
|
-
end
|
|
72
|
+
@bridge = Support::EventFiringBridge.new(bridge, listener) if listener
|
|
99
73
|
end
|
|
100
74
|
|
|
101
75
|
def inspect
|
|
102
|
-
'#<%s:0x%x browser=%s>'
|
|
76
|
+
format '#<%s:0x%x browser=%s>', self.class, hash * 2, bridge.browser.inspect
|
|
103
77
|
end
|
|
104
78
|
|
|
105
79
|
#
|
|
@@ -126,7 +100,24 @@ module Selenium
|
|
|
126
100
|
#
|
|
127
101
|
|
|
128
102
|
def manage
|
|
129
|
-
|
|
103
|
+
bridge.options
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
#
|
|
107
|
+
# @return [ActionBuilder, W3CActionBuilder]
|
|
108
|
+
# @see ActionBuilder, W3CActionBuilder
|
|
109
|
+
#
|
|
110
|
+
|
|
111
|
+
def action
|
|
112
|
+
bridge.action
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def mouse
|
|
116
|
+
bridge.mouse
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def keyboard
|
|
120
|
+
bridge.keyboard
|
|
130
121
|
end
|
|
131
122
|
|
|
132
123
|
#
|
|
@@ -144,7 +135,7 @@ module Selenium
|
|
|
144
135
|
#
|
|
145
136
|
|
|
146
137
|
def current_url
|
|
147
|
-
bridge.
|
|
138
|
+
bridge.url
|
|
148
139
|
end
|
|
149
140
|
|
|
150
141
|
#
|
|
@@ -154,7 +145,7 @@ module Selenium
|
|
|
154
145
|
#
|
|
155
146
|
|
|
156
147
|
def title
|
|
157
|
-
bridge.
|
|
148
|
+
bridge.title
|
|
158
149
|
end
|
|
159
150
|
|
|
160
151
|
#
|
|
@@ -164,7 +155,7 @@ module Selenium
|
|
|
164
155
|
#
|
|
165
156
|
|
|
166
157
|
def page_source
|
|
167
|
-
bridge.
|
|
158
|
+
bridge.page_source
|
|
168
159
|
end
|
|
169
160
|
|
|
170
161
|
#
|
|
@@ -191,7 +182,7 @@ module Selenium
|
|
|
191
182
|
#
|
|
192
183
|
|
|
193
184
|
def window_handles
|
|
194
|
-
bridge.
|
|
185
|
+
bridge.window_handles
|
|
195
186
|
end
|
|
196
187
|
|
|
197
188
|
#
|
|
@@ -201,7 +192,7 @@ module Selenium
|
|
|
201
192
|
#
|
|
202
193
|
|
|
203
194
|
def window_handle
|
|
204
|
-
bridge.
|
|
195
|
+
bridge.window_handle
|
|
205
196
|
end
|
|
206
197
|
|
|
207
198
|
#
|
|
@@ -209,7 +200,7 @@ module Selenium
|
|
|
209
200
|
#
|
|
210
201
|
# @param [String] script
|
|
211
202
|
# JavaScript source to execute
|
|
212
|
-
# @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array]
|
|
203
|
+
# @param [WebDriver::Element, Integer, Float, Boolean, NilClass, String, Array] args
|
|
213
204
|
# Arguments will be available in the given script in the 'arguments' pseudo-array.
|
|
214
205
|
#
|
|
215
206
|
# @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
|
|
@@ -217,7 +208,7 @@ module Selenium
|
|
|
217
208
|
#
|
|
218
209
|
|
|
219
210
|
def execute_script(script, *args)
|
|
220
|
-
bridge.
|
|
211
|
+
bridge.execute_script(script, *args)
|
|
221
212
|
end
|
|
222
213
|
|
|
223
214
|
# Execute an asynchronous piece of JavaScript in the context of the
|
|
@@ -229,27 +220,26 @@ module Selenium
|
|
|
229
220
|
#
|
|
230
221
|
# @param [String] script
|
|
231
222
|
# JavaScript source to execute
|
|
232
|
-
# @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array]
|
|
223
|
+
# @param [WebDriver::Element,Integer, Float, Boolean, NilClass, String, Array] args
|
|
233
224
|
# Arguments to the script. May be empty.
|
|
234
225
|
#
|
|
235
226
|
# @return [WebDriver::Element,Integer,Float,Boolean,NilClass,String,Array]
|
|
236
227
|
#
|
|
237
228
|
|
|
238
229
|
def execute_async_script(script, *args)
|
|
239
|
-
bridge.
|
|
230
|
+
bridge.execute_async_script(script, *args)
|
|
240
231
|
end
|
|
241
232
|
|
|
242
|
-
|
|
243
233
|
#-------------------------------- sugar --------------------------------
|
|
244
234
|
|
|
245
235
|
#
|
|
246
|
-
# driver.first(:
|
|
236
|
+
# driver.first(id: 'foo')
|
|
247
237
|
#
|
|
248
238
|
|
|
249
239
|
alias_method :first, :find_element
|
|
250
240
|
|
|
251
241
|
#
|
|
252
|
-
# driver.all(:
|
|
242
|
+
# driver.all(class: 'bar') #=> [#<WebDriver::Element:0x1011c3b88, ...]
|
|
253
243
|
#
|
|
254
244
|
|
|
255
245
|
alias_method :all, :find_elements
|
|
@@ -263,7 +253,7 @@ module Selenium
|
|
|
263
253
|
# Get the first element matching the given selector. If given a
|
|
264
254
|
# String or Symbol, it will be used as the id of the element.
|
|
265
255
|
#
|
|
266
|
-
# @param [String,Hash] id or selector
|
|
256
|
+
# @param [String,Hash] sel id or selector
|
|
267
257
|
# @return [WebDriver::Element]
|
|
268
258
|
#
|
|
269
259
|
# Examples:
|
|
@@ -273,9 +263,7 @@ module Selenium
|
|
|
273
263
|
#
|
|
274
264
|
|
|
275
265
|
def [](sel)
|
|
276
|
-
if sel.
|
|
277
|
-
sel = { :id => sel }
|
|
278
|
-
end
|
|
266
|
+
sel = {id: sel} if sel.is_a?(String) || sel.is_a?(Symbol)
|
|
279
267
|
|
|
280
268
|
find_element sel
|
|
281
269
|
end
|
|
@@ -299,10 +287,7 @@ module Selenium
|
|
|
299
287
|
|
|
300
288
|
private
|
|
301
289
|
|
|
302
|
-
|
|
303
|
-
@bridge
|
|
304
|
-
end
|
|
305
|
-
|
|
290
|
+
attr_reader :bridge
|
|
306
291
|
end # Driver
|
|
307
292
|
end # WebDriver
|
|
308
293
|
end # Selenium
|
|
@@ -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,40 +17,32 @@
|
|
|
19
17
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
# @api private
|
|
25
|
-
#
|
|
26
|
-
|
|
27
20
|
module DriverExtensions
|
|
28
|
-
module
|
|
21
|
+
module HasAddons
|
|
29
22
|
|
|
30
23
|
#
|
|
31
|
-
#
|
|
32
|
-
# @api public
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
def action
|
|
36
|
-
ActionBuilder.new mouse, keyboard
|
|
37
|
-
end
|
|
38
|
-
|
|
24
|
+
# Installs addon.
|
|
39
25
|
#
|
|
40
|
-
# @
|
|
26
|
+
# @param [String] path Full path to addon file
|
|
27
|
+
# @param [Boolean] temporary
|
|
28
|
+
# @return [String] identifier of installed addon
|
|
41
29
|
#
|
|
42
30
|
|
|
43
|
-
def
|
|
44
|
-
|
|
31
|
+
def install_addon(path, temporary = nil)
|
|
32
|
+
@bridge.install_addon(path, temporary)
|
|
45
33
|
end
|
|
46
34
|
|
|
47
35
|
#
|
|
48
|
-
#
|
|
36
|
+
# Uninstalls addon.
|
|
37
|
+
#
|
|
38
|
+
# @param [String] id Identifier of installed addon
|
|
49
39
|
#
|
|
50
40
|
|
|
51
|
-
def
|
|
52
|
-
|
|
41
|
+
def uninstall_addon(id)
|
|
42
|
+
@bridge.uninstall_addon(id)
|
|
53
43
|
end
|
|
54
44
|
|
|
55
|
-
end #
|
|
45
|
+
end # HasAddons
|
|
56
46
|
end # DriverExtensions
|
|
57
47
|
end # WebDriver
|
|
58
48
|
end # Selenium
|
|
@@ -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,25 +18,23 @@
|
|
|
20
18
|
module Selenium
|
|
21
19
|
module WebDriver
|
|
22
20
|
module DriverExtensions
|
|
23
|
-
|
|
24
21
|
module HasLocation
|
|
25
22
|
def location
|
|
26
|
-
@bridge.
|
|
23
|
+
@bridge.location
|
|
27
24
|
end
|
|
28
25
|
|
|
29
26
|
def location=(loc)
|
|
30
|
-
unless loc.
|
|
27
|
+
unless loc.is_a?(Location)
|
|
31
28
|
raise TypeError, "expected #{Location}, got #{loc.inspect}:#{loc.class}"
|
|
32
29
|
end
|
|
33
30
|
|
|
34
|
-
@bridge.
|
|
31
|
+
@bridge.set_location loc.latitude, loc.longitude, loc.altitude
|
|
35
32
|
end
|
|
36
33
|
|
|
37
34
|
def set_location(lat, lon, alt)
|
|
38
35
|
self.location = Location.new(Float(lat), Float(lon), Float(alt))
|
|
39
36
|
end
|
|
40
|
-
|
|
41
|
-
end #HasLocation
|
|
37
|
+
end # HasLocation
|
|
42
38
|
end # DriverExtensions
|
|
43
39
|
end # WebDriver
|
|
44
40
|
end # Selenium
|