selenium-webdriver 2.10.0 → 2.12.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +16 -2
- data/lib/selenium/webdriver/chrome/service.rb +7 -1
- data/lib/selenium/webdriver/common.rb +1 -0
- data/lib/selenium/webdriver/common/options.rb +8 -0
- data/lib/selenium/webdriver/common/window.rb +59 -0
- data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
- data/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
- data/lib/selenium/webdriver/firefox/profile.rb +2 -0
- data/lib/selenium/webdriver/ie/native/win32/IEDriver.dll +0 -0
- data/lib/selenium/webdriver/ie/native/x64/IEDriver.dll +0 -0
- data/lib/selenium/webdriver/remote/bridge.rb +28 -4
- data/lib/selenium/webdriver/remote/commands.rb +124 -18
- data/lib/selenium/webdriver/remote/http/common.rb +4 -0
- data/lib/selenium/webdriver/remote/http/persistent.rb +4 -0
- metadata +4 -3
data/CHANGES
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
2.12.0 (2011-11-10)
|
2
|
+
===================
|
3
|
+
|
4
|
+
* Loosened the ffi dependency now that Windows support is back (#2755).
|
5
|
+
* Fix shutdown issues when using net-http-persistent against remote servers.
|
6
|
+
* Added beta window control API (see Selenium::WebDriver::Options#window).
|
7
|
+
* Firefox
|
8
|
+
* Support for Firefox 8.
|
9
|
+
* Better reporting of page size when attempting to move out of bounds.
|
10
|
+
* Beta implementation of window control.
|
11
|
+
|
12
|
+
2.11.0
|
13
|
+
======
|
14
|
+
|
15
|
+
(release skipped since it included only server-side changes)
|
16
|
+
|
1
17
|
2.10.0 (2011-10-27)
|
2
18
|
===================
|
3
19
|
|
@@ -12,8 +28,6 @@
|
|
12
28
|
* IE:
|
13
29
|
* Improve handling of #clear on disabled or readonly elements.
|
14
30
|
|
15
|
-
|
16
|
-
|
17
31
|
2.9.1 (2011-10-24)
|
18
32
|
==================
|
19
33
|
|
@@ -55,7 +55,13 @@ module Selenium
|
|
55
55
|
def stop
|
56
56
|
return if @process.nil? || @process.exited?
|
57
57
|
|
58
|
-
Net::HTTP.
|
58
|
+
Net::HTTP.start(uri.host, uri.port) do |http|
|
59
|
+
http.open_timeout = STOP_TIMEOUT / 2
|
60
|
+
http.read_timeout = STOP_TIMEOUT / 2
|
61
|
+
|
62
|
+
http.head("/shutdown")
|
63
|
+
end
|
64
|
+
|
59
65
|
@process.poll_for_exit STOP_TIMEOUT
|
60
66
|
rescue ChildProcess::TimeoutError
|
61
67
|
# ok, force quit
|
@@ -15,6 +15,7 @@ require 'selenium/webdriver/common/keyboard'
|
|
15
15
|
require 'selenium/webdriver/common/target_locator'
|
16
16
|
require 'selenium/webdriver/common/navigation'
|
17
17
|
require 'selenium/webdriver/common/timeouts'
|
18
|
+
require 'selenium/webdriver/common/window'
|
18
19
|
require 'selenium/webdriver/common/options'
|
19
20
|
require 'selenium/webdriver/common/search_context'
|
20
21
|
require 'selenium/webdriver/common/action_builder'
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Selenium
|
2
|
+
module WebDriver
|
3
|
+
|
4
|
+
#
|
5
|
+
# @api beta This API may be changed or removed in a future release.
|
6
|
+
#
|
7
|
+
|
8
|
+
class Window
|
9
|
+
|
10
|
+
def initialize(bridge)
|
11
|
+
@bridge = bridge
|
12
|
+
end
|
13
|
+
|
14
|
+
def size=(dimension)
|
15
|
+
unless dimension.respond_to?(:width) && dimension.respond_to?(:height)
|
16
|
+
raise ArgumentError, "expected #{dimension.inspect}:#{dimension.class}" +
|
17
|
+
" to respond to #width and #height"
|
18
|
+
end
|
19
|
+
|
20
|
+
@bridge.setWindowSize dimension.width, dimension.height
|
21
|
+
end
|
22
|
+
|
23
|
+
def size
|
24
|
+
@bridge.getWindowSize
|
25
|
+
end
|
26
|
+
|
27
|
+
def position=(point)
|
28
|
+
unless point.respond_to?(:x) && point.respond_to?(:y)
|
29
|
+
raise ArgumentError, "expected #{point.inspect}:#{point.class}" +
|
30
|
+
" to respond to #x and #y"
|
31
|
+
end
|
32
|
+
|
33
|
+
@bridge.setWindowPosition point.x, point.y
|
34
|
+
end
|
35
|
+
|
36
|
+
def position
|
37
|
+
@bridge.getWindowPosition
|
38
|
+
end
|
39
|
+
|
40
|
+
#
|
41
|
+
# equivalent to #size=, but accepts width and height arguments
|
42
|
+
#
|
43
|
+
|
44
|
+
def resize_to(width, height)
|
45
|
+
@bridge.setWindowSize Integer(width), Integer(height)
|
46
|
+
end
|
47
|
+
|
48
|
+
#
|
49
|
+
# equivalent to #position=, but accepts x and y arguments
|
50
|
+
#
|
51
|
+
|
52
|
+
def move_to(x, y)
|
53
|
+
@bridge.setWindowPosition Integer(x), Integer(y)
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -90,7 +90,7 @@ module Selenium
|
|
90
90
|
|
91
91
|
def create_session(desired_capabilities)
|
92
92
|
resp = raw_execute :newSession, {}, :desiredCapabilities => desired_capabilities
|
93
|
-
@session_id = resp['sessionId']
|
93
|
+
@session_id = resp['sessionId'] or raise Error::WebDriverError, 'no sessionId in returned payload'
|
94
94
|
|
95
95
|
Capabilities.json_create resp['value']
|
96
96
|
end
|
@@ -183,6 +183,7 @@ module Selenium
|
|
183
183
|
|
184
184
|
def quit
|
185
185
|
execute :quit
|
186
|
+
http.close
|
186
187
|
rescue *QUIT_ERRORS
|
187
188
|
end
|
188
189
|
|
@@ -202,6 +203,29 @@ module Selenium
|
|
202
203
|
execute :getCurrentWindowHandle
|
203
204
|
end
|
204
205
|
|
206
|
+
def setWindowSize(width, height, handle = :current)
|
207
|
+
execute :setWindowSize, {:window_handle => handle},
|
208
|
+
:width => width,
|
209
|
+
:height => height
|
210
|
+
end
|
211
|
+
|
212
|
+
def getWindowSize(handle = :current)
|
213
|
+
data = execute :getWindowSize, :window_handle => handle
|
214
|
+
|
215
|
+
Dimension.new data['width'], data['height']
|
216
|
+
end
|
217
|
+
|
218
|
+
def setWindowPosition(x, y, handle = :current)
|
219
|
+
execute :setWindowPosition, {:window_handle => handle},
|
220
|
+
:x => x, :y => y
|
221
|
+
end
|
222
|
+
|
223
|
+
def getWindowPosition(handle = :current)
|
224
|
+
data = execute :getWindowPosition, :window_handle => handle
|
225
|
+
|
226
|
+
Point.new data['x'], data['y']
|
227
|
+
end
|
228
|
+
|
205
229
|
def getScreenshot
|
206
230
|
execute :screenshot
|
207
231
|
end
|
@@ -264,7 +288,7 @@ module Selenium
|
|
264
288
|
params = { :element => element }
|
265
289
|
|
266
290
|
if x && y
|
267
|
-
params.merge!
|
291
|
+
params.merge! :xoffset => x, :yoffset => y
|
268
292
|
end
|
269
293
|
|
270
294
|
execute :mouseMoveTo, {}, params
|
@@ -411,13 +435,13 @@ module Selenium
|
|
411
435
|
#
|
412
436
|
|
413
437
|
def raw_execute(command, opts = {}, command_hash = nil)
|
414
|
-
verb, path = COMMANDS[command] || raise("unknown command #{command.inspect}")
|
438
|
+
verb, path = COMMANDS[command] || raise(ArgumentError, "unknown command: #{command.inspect}")
|
415
439
|
path = path.dup
|
416
440
|
|
417
441
|
path[':session_id'] = @session_id if path.include?(":session_id")
|
418
442
|
|
419
443
|
begin
|
420
|
-
opts.each { |key, value| path[key.inspect] = escaper.escape(value.to_s)}
|
444
|
+
opts.each { |key, value| path[key.inspect] = escaper.escape(value.to_s) }
|
421
445
|
rescue IndexError
|
422
446
|
raise ArgumentError, "#{opts.inspect} invalid for #{command.inspect}"
|
423
447
|
end
|
@@ -7,34 +7,86 @@ class Selenium::WebDriver::Remote::Bridge
|
|
7
7
|
|
8
8
|
command :newSession, :post, "session"
|
9
9
|
command :getCapabilities, :get, "session/:session_id"
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
|
11
|
+
#
|
12
|
+
# basic driver
|
13
|
+
#
|
14
|
+
|
15
15
|
command :getCurrentUrl, :get, "session/:session_id/url"
|
16
16
|
command :get, :post, "session/:session_id/url"
|
17
|
-
command :dismissAlert, :post, "session/:session_id/dismiss_alert"
|
18
|
-
command :acceptAlert, :post, "session/:session_id/accept_alert"
|
19
|
-
command :getAlertText, :get, "session/:session_id/alert_text"
|
20
|
-
command :setAlertValue, :post, "session/:session_id/alert_text"
|
21
17
|
command :goForward, :post, "session/:session_id/forward"
|
22
18
|
command :goBack, :post, "session/:session_id/back"
|
23
19
|
command :refresh, :post, "session/:session_id/refresh"
|
20
|
+
command :quit, :delete, "session/:session_id"
|
21
|
+
command :close, :delete, "session/:session_id/window"
|
22
|
+
command :getVisible, :get, "session/:session_id/visible"
|
23
|
+
command :setVisible, :post, "session/:session_id/visible"
|
24
|
+
command :getPageSource, :get, "session/:session_id/source"
|
25
|
+
command :getTitle, :get, "session/:session_id/title"
|
26
|
+
command :findElement, :post, "session/:session_id/element"
|
27
|
+
command :findElements, :post, "session/:session_id/elements"
|
28
|
+
command :getActiveElement, :post, "session/:session_id/element/active"
|
29
|
+
|
30
|
+
#
|
31
|
+
# window handling
|
32
|
+
#
|
33
|
+
|
34
|
+
command :getCurrentWindowHandle, :get, "session/:session_id/window_handle"
|
35
|
+
command :getWindowHandles, :get, "session/:session_id/window_handles"
|
36
|
+
command :setWindowSize, :post, "session/:session_id/window/:window_handle/size"
|
37
|
+
command :setWindowPosition, :post, "session/:session_id/window/:window_handle/position"
|
38
|
+
command :getWindowSize, :get, "session/:session_id/window/:window_handle/size"
|
39
|
+
command :getWindowPosition, :get, "session/:session_id/window/:window_handle/position"
|
40
|
+
|
41
|
+
#
|
42
|
+
# script execution
|
43
|
+
#
|
44
|
+
|
24
45
|
command :executeScript, :post, "session/:session_id/execute"
|
25
46
|
command :executeAsyncScript, :post, "session/:session_id/execute_async"
|
47
|
+
|
48
|
+
#
|
49
|
+
# screenshot
|
50
|
+
#
|
51
|
+
|
26
52
|
command :screenshot, :get, "session/:session_id/screenshot"
|
53
|
+
|
54
|
+
#
|
55
|
+
# alerts
|
56
|
+
#
|
57
|
+
|
58
|
+
command :dismissAlert, :post, "session/:session_id/dismiss_alert"
|
59
|
+
command :acceptAlert, :post, "session/:session_id/accept_alert"
|
60
|
+
command :getAlertText, :get, "session/:session_id/alert_text"
|
61
|
+
command :setAlertValue, :post, "session/:session_id/alert_text"
|
62
|
+
|
63
|
+
#
|
64
|
+
# target locator
|
65
|
+
#
|
66
|
+
|
27
67
|
command :switchToFrame, :post, "session/:session_id/frame"
|
28
68
|
command :switchToWindow, :post, "session/:session_id/window"
|
69
|
+
|
70
|
+
#
|
71
|
+
# options
|
72
|
+
#
|
73
|
+
|
29
74
|
command :getAllCookies, :get, "session/:session_id/cookie"
|
30
75
|
command :addCookie, :post, "session/:session_id/cookie"
|
31
76
|
command :deleteAllCookies, :delete, "session/:session_id/cookie"
|
32
77
|
command :deleteCookieNamed, :delete, "session/:session_id/cookie/:name"
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
78
|
+
|
79
|
+
#
|
80
|
+
# timeouts
|
81
|
+
#
|
82
|
+
|
83
|
+
command :setImplicitWaitTimeout, :post, "session/:session_id/timeouts/implicit_wait"
|
84
|
+
command :setScriptTimeout, :post, "session/:session_id/timeouts/async_script"
|
85
|
+
|
86
|
+
#
|
87
|
+
# element
|
88
|
+
#
|
89
|
+
|
38
90
|
command :describeElement, :get, "session/:session_id/element/:id"
|
39
91
|
command :findChildElement, :post, "session/:session_id/element/:id/element"
|
40
92
|
command :findChildElements, :post, "session/:session_id/element/:id/elements"
|
@@ -42,6 +94,7 @@ class Selenium::WebDriver::Remote::Bridge
|
|
42
94
|
command :submitElement, :post, "session/:session_id/element/:id/submit"
|
43
95
|
command :getElementValue, :get, "session/:session_id/element/:id/value"
|
44
96
|
command :sendKeysToElement, :post, "session/:session_id/element/:id/value"
|
97
|
+
command :uploadFile, :post, "session/:session_id/file"
|
45
98
|
command :getElementTagName, :get, "session/:session_id/element/:id/name"
|
46
99
|
command :clearElement, :post, "session/:session_id/element/:id/clear"
|
47
100
|
command :isElementSelected, :get, "session/:session_id/element/:id/selected"
|
@@ -55,15 +108,19 @@ class Selenium::WebDriver::Remote::Bridge
|
|
55
108
|
command :getElementSize, :get, "session/:session_id/element/:id/size"
|
56
109
|
command :dragElement, :post, "session/:session_id/element/:id/drag"
|
57
110
|
command :getElementValueOfCssProperty, :get, "session/:session_id/element/:id/css/:property_name"
|
58
|
-
command :close, :delete, "session/:session_id/window"
|
59
111
|
command :getElementText, :get, "session/:session_id/element/:id/text"
|
60
|
-
|
61
|
-
|
112
|
+
|
113
|
+
#
|
114
|
+
# rotatable
|
115
|
+
#
|
116
|
+
|
62
117
|
command :getScreenOrientation, :get, "session/:session_id/orientation"
|
63
118
|
command :setScreenOrientation, :post, "session/:session_id/orientation"
|
64
|
-
command :uploadFile, :post, "session/:session_id/file"
|
65
119
|
|
120
|
+
#
|
66
121
|
# interactions API
|
122
|
+
#
|
123
|
+
|
67
124
|
command :click, :post, "session/:session_id/click"
|
68
125
|
command :doubleClick, :post, "session/:session_id/doubleclick"
|
69
126
|
command :mouseDown, :post, "session/:session_id/buttondown"
|
@@ -72,4 +129,53 @@ class Selenium::WebDriver::Remote::Bridge
|
|
72
129
|
command :sendModifierKeyToActiveElement, :post, "session/:session_id/modifier"
|
73
130
|
command :sendKeysToActiveElement, :post, "session/:session_id/keys"
|
74
131
|
|
132
|
+
#
|
133
|
+
# html 5
|
134
|
+
#
|
135
|
+
|
136
|
+
command :executeSql, :post, "session/:session_id/execute_sql"
|
137
|
+
command :getLocation, :get, "session/:session_id/location"
|
138
|
+
command :setLocation, :post, "session/:session_id/location"
|
139
|
+
command :getAppCache, :get, "session/:session_id/application_cache"
|
140
|
+
command :getAppCacheStatus, :get, "session/:session_id/application_cache/status"
|
141
|
+
command :clearAppCache, :delete, "session/:session_id/application_cache/clear"
|
142
|
+
command :isBrowserOnline, :get, "session/:session_id/browser_connection"
|
143
|
+
command :setBrowserOnline, :post, "session/:session_id/browser_connection"
|
144
|
+
|
145
|
+
command :getLocalStorageItem, :get, "session/:session_id/local_storage/key/:key"
|
146
|
+
command :removeLocalStorageItem, :delete, "session/:session_id/local_storage/key/:key"
|
147
|
+
command :getLocalStorageKeys, :get, "session/:session_id/local_storage"
|
148
|
+
command :setLocalStorageItem, :post, "session/:session_id/local_storage"
|
149
|
+
command :clearLocalStorage, :delete, "session/:session_id/local_storage"
|
150
|
+
command :getLocalStorageSize, :get, "session/:session_id/local_storage/size"
|
151
|
+
|
152
|
+
command :getSessionStorageItem, :get, "session/:session_id/session_storage/key/:key"
|
153
|
+
command :removeSessionStorageItem, :delete, "session/:session_id/session_storage/key/:key"
|
154
|
+
command :getSessionStorageKeys, :get, "session/:session_id/session_storage"
|
155
|
+
command :setSessionStorageItem, :post, "session/:session_id/session_storage"
|
156
|
+
command :clearSessionStorage, :delete, "session/:session_id/session_storage"
|
157
|
+
command :getSessionStorageSize, :get, "session/:session_id/session_storage/size"
|
158
|
+
|
159
|
+
#
|
160
|
+
# ime
|
161
|
+
#
|
162
|
+
|
163
|
+
command :imeGetAvailableEngines, :get, "session/:session_id/ime/available_engines"
|
164
|
+
command :imeGetActiveEngine, :get, "session/:session_id/ime/active_engine"
|
165
|
+
command :imeIsActivated, :get, "session/:session_id/ime/activated"
|
166
|
+
command :imeDeactivate, :post, "session/:session_id/ime/deactivate"
|
167
|
+
command :imeActivateEngine, :post, "session/:session_id/ime/activate"
|
168
|
+
|
169
|
+
#
|
170
|
+
# touch
|
171
|
+
#
|
172
|
+
|
173
|
+
command :touchSingleTap, :post, "session/:session_id/touch/click"
|
174
|
+
command :touchDoubleTap, :post, "session/:session_id/touch/doubleclick"
|
175
|
+
command :touchLongPress, :post, "session/:session_id/touch/longclick"
|
176
|
+
command :touchDown, :post, "session/:session_id/touch/down"
|
177
|
+
command :touchUp, :post, "session/:session_id/touch/up"
|
178
|
+
command :touchMove, :post, "session/:session_id/touch/move"
|
179
|
+
command :touchScroll, :post, "session/:session_id/touch/scroll"
|
180
|
+
command :touchFlick, :post, "session/:session_id/touch/flick"
|
75
181
|
end
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: selenium-webdriver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.
|
5
|
+
version: 2.12.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jari Bakken
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-10
|
13
|
+
date: 2011-11-10 00:00:00 +01:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
requirement: &id004 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
54
54
|
requirements:
|
55
|
-
- -
|
55
|
+
- - ~>
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: 1.0.9
|
58
58
|
type: :runtime
|
@@ -161,6 +161,7 @@ files:
|
|
161
161
|
- lib/selenium/webdriver/common/target_locator.rb
|
162
162
|
- lib/selenium/webdriver/common/timeouts.rb
|
163
163
|
- lib/selenium/webdriver/common/wait.rb
|
164
|
+
- lib/selenium/webdriver/common/window.rb
|
164
165
|
- lib/selenium/webdriver/common/zipper.rb
|
165
166
|
- lib/selenium/webdriver/common/core_ext/base64.rb
|
166
167
|
- lib/selenium/webdriver/common/core_ext/dir.rb
|