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
|
@@ -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
|