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.
Files changed (152) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +363 -10
  3. data/LICENSE +1 -1
  4. data/README.md +2 -3
  5. data/lib/selenium-webdriver.rb +0 -2
  6. data/lib/selenium/server.rb +69 -70
  7. data/lib/selenium/webdriver.rb +32 -23
  8. data/lib/selenium/webdriver/atoms.rb +18 -0
  9. data/lib/selenium/webdriver/atoms/getAttribute.js +8 -0
  10. data/lib/selenium/webdriver/chrome.rb +8 -6
  11. data/lib/selenium/webdriver/chrome/driver.rb +112 -0
  12. data/lib/selenium/webdriver/chrome/options.rb +168 -0
  13. data/lib/selenium/webdriver/chrome/profile.rb +17 -17
  14. data/lib/selenium/webdriver/chrome/service.rb +22 -89
  15. data/lib/selenium/webdriver/common.rb +13 -6
  16. data/lib/selenium/webdriver/common/action_builder.rb +49 -57
  17. data/lib/selenium/webdriver/common/alert.rb +5 -15
  18. data/lib/selenium/webdriver/common/bridge_helper.rb +10 -17
  19. data/lib/selenium/webdriver/common/driver.rb +53 -68
  20. data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_addons.rb} +13 -23
  21. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +4 -8
  22. data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +4 -7
  23. data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +0 -4
  24. data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +0 -4
  25. data/lib/selenium/webdriver/common/driver_extensions/has_touch_screen.rb +1 -5
  26. data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +0 -5
  27. data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +4 -9
  28. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +7 -7
  29. data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +2 -7
  30. data/lib/selenium/webdriver/common/element.rb +57 -39
  31. data/lib/selenium/webdriver/common/error.rb +204 -106
  32. data/lib/selenium/webdriver/common/file_reaper.rb +3 -11
  33. data/lib/selenium/webdriver/common/html5/local_storage.rb +6 -10
  34. data/lib/selenium/webdriver/common/html5/session_storage.rb +6 -10
  35. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +7 -18
  36. data/lib/selenium/webdriver/{safari/options.rb → common/interactions/input_device.rb} +20 -31
  37. data/lib/selenium/webdriver/common/interactions/interaction.rb +50 -0
  38. data/lib/selenium/webdriver/{safari/browser.rb → common/interactions/interactions.rb} +16 -15
  39. data/lib/selenium/webdriver/common/interactions/key_actions.rb +143 -0
  40. data/lib/selenium/webdriver/common/interactions/key_input.rb +62 -0
  41. data/lib/selenium/webdriver/{android.rb → common/interactions/none_input.rb} +11 -6
  42. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +353 -0
  43. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +132 -0
  44. data/lib/selenium/webdriver/common/keyboard.rb +7 -14
  45. data/lib/selenium/webdriver/common/keys.rb +99 -82
  46. data/lib/selenium/webdriver/common/log_entry.rb +3 -6
  47. data/lib/selenium/webdriver/common/logger.rb +140 -0
  48. data/lib/selenium/webdriver/common/logs.rb +2 -6
  49. data/lib/selenium/webdriver/common/mouse.rb +9 -14
  50. data/lib/selenium/webdriver/common/navigation.rb +2 -6
  51. data/lib/selenium/webdriver/common/options.rb +20 -23
  52. data/lib/selenium/webdriver/common/platform.rb +70 -97
  53. data/lib/selenium/webdriver/common/port_prober.rb +3 -4
  54. data/lib/selenium/webdriver/common/profile_helper.rb +6 -11
  55. data/lib/selenium/webdriver/common/proxy.rb +58 -72
  56. data/lib/selenium/webdriver/common/search_context.rb +22 -29
  57. data/lib/selenium/webdriver/common/service.rb +161 -0
  58. data/lib/selenium/webdriver/common/socket_lock.rb +6 -14
  59. data/lib/selenium/webdriver/common/socket_poller.rb +5 -12
  60. data/lib/selenium/webdriver/common/target_locator.rb +11 -15
  61. data/lib/selenium/webdriver/common/timeouts.rb +4 -8
  62. data/lib/selenium/webdriver/common/touch_action_builder.rb +2 -6
  63. data/lib/selenium/webdriver/common/touch_screen.rb +19 -23
  64. data/lib/selenium/webdriver/common/w3c_action_builder.rb +209 -0
  65. data/lib/selenium/webdriver/{phantomjs.rb → common/w3c_options.rb} +16 -14
  66. data/lib/selenium/webdriver/common/wait.rb +6 -13
  67. data/lib/selenium/webdriver/common/window.rb +48 -17
  68. data/lib/selenium/webdriver/common/zipper.rb +6 -10
  69. data/lib/selenium/webdriver/edge.rb +5 -12
  70. data/lib/selenium/webdriver/edge/bridge.rb +32 -63
  71. data/lib/selenium/webdriver/edge/driver.rb +73 -0
  72. data/lib/selenium/webdriver/edge/service.rb +18 -87
  73. data/lib/selenium/webdriver/firefox.rb +20 -11
  74. data/lib/selenium/webdriver/firefox/binary.rb +40 -56
  75. data/lib/selenium/webdriver/firefox/driver.rb +48 -0
  76. data/lib/selenium/webdriver/firefox/extension.rb +18 -8
  77. data/lib/selenium/webdriver/firefox/extension/prefs.json +3 -11
  78. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  79. data/lib/selenium/webdriver/firefox/launcher.rb +13 -22
  80. data/lib/selenium/webdriver/firefox/legacy/driver.rb +79 -0
  81. data/lib/selenium/webdriver/{iphone.rb → firefox/marionette/bridge.rb} +25 -6
  82. data/lib/selenium/webdriver/firefox/marionette/driver.rb +96 -0
  83. data/lib/selenium/webdriver/firefox/options.rb +149 -0
  84. data/lib/selenium/webdriver/firefox/profile.rb +46 -46
  85. data/lib/selenium/webdriver/firefox/profiles_ini.rb +8 -18
  86. data/lib/selenium/webdriver/firefox/service.rb +23 -83
  87. data/lib/selenium/webdriver/firefox/util.rb +0 -4
  88. data/lib/selenium/webdriver/ie.rb +4 -8
  89. data/lib/selenium/webdriver/ie/driver.rb +90 -0
  90. data/lib/selenium/webdriver/ie/options.rb +136 -0
  91. data/lib/selenium/webdriver/ie/service.rb +58 -0
  92. data/lib/selenium/webdriver/remote.rb +8 -16
  93. data/lib/selenium/webdriver/remote/bridge.rb +96 -565
  94. data/lib/selenium/webdriver/remote/capabilities.rb +76 -94
  95. data/lib/selenium/webdriver/remote/driver.rb +49 -0
  96. data/lib/selenium/webdriver/remote/http/common.rb +22 -20
  97. data/lib/selenium/webdriver/remote/http/curb.rb +9 -12
  98. data/lib/selenium/webdriver/remote/http/default.rb +54 -41
  99. data/lib/selenium/webdriver/remote/http/persistent.rb +9 -8
  100. data/lib/selenium/webdriver/remote/oss/bridge.rb +586 -0
  101. data/lib/selenium/webdriver/remote/oss/commands.rb +221 -0
  102. data/lib/selenium/webdriver/remote/response.rb +39 -27
  103. data/lib/selenium/webdriver/remote/server_error.rb +1 -5
  104. data/lib/selenium/webdriver/remote/w3c/bridge.rb +573 -0
  105. data/lib/selenium/webdriver/remote/w3c/capabilities.rb +290 -0
  106. data/lib/selenium/webdriver/remote/w3c/commands.rb +148 -0
  107. data/lib/selenium/webdriver/safari.rb +20 -29
  108. data/lib/selenium/webdriver/{firefox/w3c_bridge.rb → safari/driver.rb} +21 -30
  109. data/lib/selenium/webdriver/safari/service.rb +57 -0
  110. data/lib/selenium/webdriver/support.rb +1 -2
  111. data/lib/selenium/webdriver/support/abstract_event_listener.rb +17 -4
  112. data/lib/selenium/webdriver/support/block_event_listener.rb +1 -5
  113. data/lib/selenium/webdriver/support/color.rb +57 -42
  114. data/lib/selenium/webdriver/support/escaper.rb +41 -0
  115. data/lib/selenium/webdriver/support/event_firing_bridge.rb +36 -40
  116. data/lib/selenium/webdriver/support/select.rb +33 -86
  117. data/selenium-webdriver.gemspec +22 -25
  118. metadata +254 -261
  119. data/lib/selenium-client.rb +0 -21
  120. data/lib/selenium/client.rb +0 -57
  121. data/lib/selenium/client/base.rb +0 -151
  122. data/lib/selenium/client/driver.rb +0 -29
  123. data/lib/selenium/client/errors.rb +0 -28
  124. data/lib/selenium/client/extensions.rb +0 -132
  125. data/lib/selenium/client/idiomatic.rb +0 -507
  126. data/lib/selenium/client/javascript_expression_builder.rb +0 -135
  127. data/lib/selenium/client/javascript_frameworks/jquery.rb +0 -32
  128. data/lib/selenium/client/javascript_frameworks/prototype.rb +0 -32
  129. data/lib/selenium/client/legacy_driver.rb +0 -1722
  130. data/lib/selenium/client/protocol.rb +0 -123
  131. data/lib/selenium/client/selenium_helper.rb +0 -49
  132. data/lib/selenium/rake/server_task.rb +0 -176
  133. data/lib/selenium/webdriver/android/bridge.rb +0 -68
  134. data/lib/selenium/webdriver/chrome/bridge.rb +0 -139
  135. data/lib/selenium/webdriver/common/core_ext/base64.rb +0 -28
  136. data/lib/selenium/webdriver/common/core_ext/dir.rb +0 -61
  137. data/lib/selenium/webdriver/common/html5/location.rb +0 -19
  138. data/lib/selenium/webdriver/common/w3c_error.rb +0 -194
  139. data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
  140. data/lib/selenium/webdriver/firefox/bridge.rb +0 -89
  141. data/lib/selenium/webdriver/ie/bridge.rb +0 -88
  142. data/lib/selenium/webdriver/ie/server.rb +0 -133
  143. data/lib/selenium/webdriver/iphone/bridge.rb +0 -64
  144. data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -78
  145. data/lib/selenium/webdriver/phantomjs/service.rb +0 -130
  146. data/lib/selenium/webdriver/remote/commands.rb +0 -211
  147. data/lib/selenium/webdriver/remote/w3c_bridge.rb +0 -668
  148. data/lib/selenium/webdriver/remote/w3c_capabilities.rb +0 -236
  149. data/lib/selenium/webdriver/remote/w3c_commands.rb +0 -132
  150. data/lib/selenium/webdriver/safari/bridge.rb +0 -135
  151. data/lib/selenium/webdriver/safari/resources/client.js +0 -7255
  152. data/lib/selenium/webdriver/safari/server.rb +0 -187
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 040d77515f5ec4c62675327ab517eec003fbead5a3062766036e81bb9e44412b
4
+ data.tar.gz: d032a845a6bfa1819b0baddb61e93b2185d03623e4834fa55b1fa1090ea5829e
5
+ SHA512:
6
+ metadata.gz: ea59ab603478f2713683e681a9d112673e6d0ce54bd7fab0711550cdee256527ddc9b7cc9c0bd1dae248f00274b73f4583365b28ede303f9961b4ffae737545e
7
+ data.tar.gz: 35c08a797df512637253014872e7262aa30ba676b2ee0fd4849175b074a8aaed4640c876ce1aa9da932a7e48ba7f085348b845551015aff4dde7611142f431d5
data/CHANGES CHANGED
@@ -1,34 +1,387 @@
1
- 2.53.4 (2016-06-14)
1
+ 3.8.0 (2017-12-01)
2
+ ==================
3
+
4
+ Ruby:
5
+ * Removed deprecated Alert#authenticate
6
+ * Removed deprecated :port initialization argument of Remote::Bridge.
7
+ Use :url instead.
8
+ * Removed deprecated Selenium::WebDriver::Remote::W3CCapabilities.
9
+ Use Selenium::WebDriver::Remote::Capabilities instead.
10
+
11
+ IE:
12
+ * Remove deprecated :log_file driver initialization argument.
13
+ Use driver_opts: {log_file: ''} instead.
14
+ * Remove deprecated :log_level driver initialization argument.
15
+ Use driver_opts: {log_level: ''} instead.
16
+ * Remove deprecated :implementation driver initialization argument.
17
+ Use driver_opts: {implementation: ''} instead.
18
+ * Removed deprecated :service_args driver initialization argument.
19
+ Use driver_opts: {args: ['--some-switch']} instead.
20
+
21
+ Chrome:
22
+ * Removed deprecated :service_log_path driver initialization argument.
23
+ Use driver_opts: {log_path: 'path'} instead.
24
+ * Removed deprecated :service_args driver initialization argument.
25
+ Use driver_opts: {args: ['--some-switch']} instead.
26
+
27
+ Firefox:
28
+ * Removed deprecated :service_args driver initialization argument.
29
+ Use driver_opts: {args: ['--some-switch']} instead.
30
+
31
+ Safari:
32
+ * Removed deprecated :service_args driver initialization argument.
33
+ Use driver_opts: {args: ['--some-switch']} instead.
34
+
35
+ Edge:
36
+ * Removed deprecated :service_args driver initialization argument.
37
+ Use driver_opts: {args: ['--some-switch']} instead.
38
+
39
+ 3.7.0 (2017-11-03)
40
+ ==================
41
+
42
+ Ruby:
43
+ * Added //rb:lint task to check codebase using RuboCop (thanks @RustyNail)
44
+ * Fixed codebase to comply more to Ruby community style guide (thanks @RustyNail)
45
+ * Packaged all dependencies to Selenium repository so that non-Ruby committers
46
+ can build and test Ruby bindings easier
47
+ * Update errors list according to latest changes of specification (thanks @jaysonesmith)
48
+
49
+ Firefox:
50
+ * Added Firefox::Options#headless! shortcut to enable headless mode (thanks @franzliedke)
51
+
52
+ 3.6.0 (2017-09-25)
53
+ ==================
54
+
55
+ Edge:
56
+ * Fixed a bug when execute_script failed using server + Edge (issue #4651)
57
+
58
+ Firefox:
59
+ * Fixed a bug when web extension failed to install using profile class (issue #4093)
60
+
61
+ PhantomJS:
62
+ * Support is deprecated in favor of headless Chrome/Firefox or HTMLUnit.
63
+ PhantomJS is no longer actively developed, and support will eventually
64
+ be dropped.
65
+
66
+ 3.5.2 (2017-09-07)
67
+ ==================
68
+
69
+ Ruby:
70
+ * Removed platformVersion from W3C payload (issue #4641)
71
+ * Fixed a bug when proxy type was not compliant to specification (issue #4574)
72
+ * Added support for passing speed to flick action (issue #4549)
73
+ * Using TouchActionBuilder no longer prints mouse/key deprecations
74
+ * Deprecated Alert#authenticate
75
+ * Added support for DEBUG environment variable which enables full debug mode in gem
76
+
77
+ Firefox:
78
+ * Fixed a bug when page load timeout was not properly constructed in new session payload
79
+ * Fixed a bug when GeckoDriver error stacktrace was not displayed (issue #3683)
80
+
81
+ Chrome:
82
+ * Added workaround for the case when findElements call returns null (issue #4555)
83
+ * Chrome::Driver now includes touch actions by default
84
+
85
+ 3.5.1 (2017-08-15)
86
+ ==================
87
+
88
+ Ruby:
89
+ * Fixed a bug when Chrome/Firefox (and probably other) drivers could not be
90
+ started on JRuby (issue #4453).
91
+
92
+ 3.5.0 (2017-08-10)
93
+ ==================
94
+
95
+ Firefox:
96
+ * Firefox subprocess output is now only redirected when debug is set (issue #4311)
97
+ * Fixed a bug where non-integers could be sent when setting window rect
98
+ * Fixed Firefox location detection on Windows_x64 (thanks kamenlitchev)
99
+ * Fixed passing of profile with a W3C compatible remote end
100
+
101
+ IE:
102
+ * Added new IE::Options class that should be used to customize browser
103
+ behavior (native events, element scroll behavior, etc).
104
+ The instance of options class can be passed to driver initialization using
105
+ :options key. Old way of passing these customization directly to driver
106
+ initialization is deprecated.
107
+
108
+ 3.4.4 (2017-07-13)
109
+ ==================
110
+
111
+ Firefox:
112
+ * Added support for GeckoDriver install addon command (issue 4215).
113
+ * Added support for GeckoDriver uninstall addon command (issue 4215).
114
+ * Raise error when passing :firefox_options as capability.
115
+
116
+ Ruby:
117
+ * Fixed a bug when childprocess were leaking /dev/null file descriptor (issue 4285).
118
+ * Make Remote::Driver class so that it can be inherited from.
119
+
120
+ 3.4.3 (2017-06-16)
121
+ ==================
122
+
123
+ Ruby:
124
+ * Fixed a regression when passing symbol as :desired_capabilities caused NoMethodError (issue 4187).
125
+
126
+ 3.4.2 (2017-06-14)
127
+ ==================
128
+
129
+ Ruby:
130
+ * Added unhandledPromptBehavior to the list of known capabilities.
131
+ * Added timeouts to the list of known capabilities.
132
+ * Fixed a regression when passing hash as :desired_capabilities caused NoMethodError (issue 4172, thanks Thomas Walpole).
133
+ * Fixed a regression when extension capabilities (the ones that have ":" inside)
134
+ were filtered out when doing protocol handshake.
135
+ * Improved handling of capability names passed as plain camelCased strings
136
+ vs Rubyish snake_cased symbols when doing protocol handshake.
137
+
138
+ Chrome:
139
+ * Fixed a regression when passing :switches to driver initialization was ignored.
140
+
141
+ 3.4.1 (2017-06-13)
142
+ ==================
143
+
144
+ Ruby:
145
+ * Implemented a new dual-dialect mechanism for communication with drivers
146
+ (a.k.a. protocol handshake). There shouldn't be any noticeable differences
147
+ but since this is a significant refactoring of internal APIs, some bugs
148
+ could slip into the release.
149
+ * Renamed ElementClickIntercepted to ElementClickInterceptedError.
150
+ * Renamed ElementNotInteractable to ElementNotInteractableError.
151
+ * Deprecated W3CCapabilities in favor of Capabilities (it was meant to be private API).
152
+ * Added a warning when trying to save screenshot without .png extension (thanks @abotalov).
153
+
154
+ IE:
155
+ * Added support for both old IEDriver which uses OSS dialect of JSON wire
156
+ protocol (<= 3.4.0) and new IEDriver which uses W3C dialect (not yet released).
157
+
158
+ Safari:
159
+ * Removed runtime dependencies used for old SafariDriver (u.g. websocket).
160
+
161
+ Chrome:
162
+ * Added new Chrome::Options class that should be used to customize browser
163
+ behavior (command line arguments, extensions, preferences, mobile emulation, etc.).
164
+ The instance of options class can be passed to driver initialization using
165
+ :options key. Old way of passing these customization directly to driver
166
+ initialization is deprecated.
167
+
168
+ Firefox:
169
+ * Added new Firefox::Options class that should be used to customize browser
170
+ behavior (command line arguments, profile, preferences, Firefox binary, etc.).
171
+ The instance of options class can be passed to driver initialization using
172
+ :options key. Old way of passing these customization directly to driver
173
+ initialization is deprecated.
174
+
175
+ 3.4.0 (2017-04-21)
2
176
  ===================
3
177
 
178
+ Edge:
179
+ * Fix bug when response is not wrapped with "value"
180
+
4
181
  Firefox:
5
- * FirefoxDriver works with v47.0.1 (issue 2110)
182
+ * Support geckodriver v0.16
183
+
184
+ Ruby:
185
+ * Support ElementClickIntercepted error from W3C spec
186
+ * Support ElementNotInteractable error from W3C spec
187
+ * Implement window rect commands
188
+ * Implement window minimize command
6
189
 
7
- 2.53.3 (2016-06-14)
190
+ 3.3.0 (2017-03-07)
8
191
  ===================
9
192
 
10
193
  Firefox:
11
- * Fix bug with Firefox Binary & Marionette on Remote machines (issue 2281)
194
+ * geckodriver v0.15 or later is required
195
+
196
+ W3C:
197
+ * Support for command response data to be wrapped in a 'value' key
198
+ * Support for updated timeout formats
199
+
200
+ 3.2.2 (2017-03-01)
201
+ ===================
202
+
203
+ Ruby:
204
+ * Fix bug for supporting Logger output on Ruby versions < 2.3
205
+ * Add more logging and adjust output levels
206
+
207
+ Remote:
208
+ * Support for creating Remote session with browser name and url parameters
12
209
 
13
- 2.53.2 (2016-06-13)
210
+ 3.2.1 (2017-02-24)
14
211
  ===================
15
212
 
16
213
  Ruby:
17
- * Fix bug for finding binaries on Windows (issue 2271 & 2273)
214
+ * Fix bug for supporting Logger on Ruby versions < 2.3
18
215
 
19
- 2.53.1 (2016-06-09)
216
+ 3.2.0 (2017-02-22)
217
+ ===================
218
+
219
+ Ruby:
220
+ * Implement new Logger class
221
+ * Fix issue with chromedriver process leader incompatibility on Win7 (issue 3512)
222
+
223
+ 3.1.0 (2017-02-14)
224
+ ===================
225
+
226
+ Firefox:
227
+ * implement W3C actions endpoint
228
+
229
+ 3.0.8 (2017-02-08)
230
+ ===================
231
+
232
+ Firefox:
233
+ * Fix signature of element returned from #active_element
234
+
235
+ 3.0.7 (2017-02-06)
236
+ ===================
237
+
238
+ Firefox:
239
+ * Fix signature of element arrays returned from #find_elements (issue 3471)
240
+
241
+ 3.0.6 (2017-02-05)
242
+ ===================
243
+
244
+ Firefox:
245
+ * Implement W3C window position
246
+ * Update implementation for W3C send text to alert
247
+ * Implement timeout settings
248
+ * Remove default capabilities (thanks lmtierney)
249
+ * Fix signature of elements returned from #execute_script (thanks Thomas Walpole)
250
+
251
+ 3.0.5 (2016-12-27)
252
+ ===================
253
+
254
+ Ruby:
255
+ * Support for Ruby 2.4.0 (Thanks jamespdo)
256
+
257
+ 3.0.4 (2016-12-21)
258
+ ===================
259
+
260
+ Firefox:
261
+ * Implement profile support via geckodriver (#2933 thanks lmtierney)
262
+
263
+ Ruby:
264
+ * Fix bug preventing use of Curb client (#2951 thanks clarkenciel)
265
+ * Support Net::HTTP::Persistent version 3 (#3219 thanks Pete Johns)
266
+ * Allow Net::HTTP::Default to set open_timout and read_timeout independently (#3264 thanks richseviora)
267
+ * Change default for Net::HTTP::Default#open_timeout to facilitate debuggers (#3264 thanks richseviora)
268
+
269
+ 3.0.3 (2016-11-26)
270
+ ===================
271
+
272
+ Ruby:
273
+ * Allow drivers to be executed from batch files on Windows
274
+
275
+ 3.0.2 (2016-11-25)
276
+ ===================
277
+
278
+ Ruby:
279
+ * Implement #driver_path as parameter when initializing a driver (thanks lmtierney)
280
+ * Improve Ruby syntax in driver commands (thanks joe_schulte)
281
+ * Improve performance when shutting down drivers (thanks lmtierney)
282
+ * Fix bug for finding open ports on Windows (thanks kou1okada)
283
+ * Fix bug in auto detection of drivers which allowed selection of non-executable binaries
284
+
285
+ W3C:
286
+ * Implement #cookie_named and #delete_all_cookies methods (thanks lmtierney)

287
+ * Implement element #property method (thanks lmtierney)

288
+
289
+ Chrome:
290
+ * Fix bug in switches (thanks danvine)

291
+
292
+ 3.0.1 (2016-11-06)
293
+ ===================
294
+
295
+ Ruby:
296
+ * Always send JSON Wire Protocol commands to server instead of W3C commands
297
+
298
+ 3.0.0 (2016-10-13)
299
+ ===================
300
+
301
+ Firefox:
302
+ * Update :firefox_options support for geckodriver 0.11
303
+
304
+ 3.0.0.beta4 (2016-09-29)
305
+ ===================
306
+
307
+ Ruby:
308
+ * Remove support for deprecated driver options
309
+ * Add support for latest driver options
310
+ * Add support for :port parameter for launching driver
311
+ * Add support for :service_args parameter for driver command line switches
312
+ * Improve reliability by increasing service shutdown timeout (#2815; thanks John Barbuto )

313
+
314
+ Firefox:
315
+ * Add support for :firefox_options in geckodriver
316
+
317
+ Safari:
318
+ * Remove support for legacy Safari driver (use Apple's driver built in to Safari 10+)
319
+
320
+ Chrome:
321
+ * Set chromedriver to not log by default
322
+
323
+ 3.0.0.beta3.1 (2016-09-03)
324
+ ===================
325
+
326
+ Firefox:
327
+ * Fixed bug - legacy firefox extension included in gem
328
+
329
+ 3.0.0.beta3 (2016-09-01)
20
330
  ===================
21
331
 
22
332
  Firefox:
23
- * Support for latest geckodriver (formerly wires)
24
- * Escape selector when converting to CSS (issue 2235)
333
+ * Implemented w3c getAttribute with javascript atom
25
334
 
26
- 2.53.0 (2016-03-16)
335
+ 3.0.0.beta2.1 (2016-08-03)
336
+ ===================
337
+
338
+ Ruby:
339
+ * Fixed bug in collections
340
+
341
+ 3.0.0.beta2 (2016-08-02)
342
+ ===================
343
+
344
+ Firefox:
345
+ * Fixed bug with form submission
346
+ * Improved w3c element handling
347
+
348
+ 3.0.0.beta1 (2016-07-28)
349
+ ===================
350
+
351
+ Ruby:
352
+ * Remove support for RC client
353
+ * Remove support for Ruby < 2.0
354
+ * Update code to support designated style guidelines
355
+ * Chrome/GeckoDriver/PhantomJS/IE/Edge drivers are refactored to use standard
356
+ service class (issue 1797)
357
+ * Option `:timeout` was removed from IE server (issue 1797)
358
+
359
+ Chrome:
360
+ * Remove override of default chromedriver behavior for chrome.detach (issue 2418)
361
+
362
+ Firefox:
363
+ * Rename wires to geckodriver
364
+ * Change default usage from FirefoxDriver to geckodriver
365
+
366
+ Safari:
367
+ * Initial support for Apple's Safari Driver in Sierra (issue #2475)
368
+
369
+ Android and iPhone:
370
+ * Remove support for deprecated classes (Issue #2476)
371
+
372
+ 2.53.0 (2016-03-15)
27
373
  ===================
28
374
 
29
375
  Ruby:
30
376
  * Removed dependency on "multi_json" (issue 1632)
31
377
  * Properly handle namespaces in install manifest of Firefox add-ons (issue 1143)
378
+ * Improve error handling when stopping browsers (thanks bsedat)
379
+ * Fix deselecting options in select lists (thanks glib-briia)
380
+ * Fix w3c error handling
381
+ * Update w3c Capabilities support
382
+
383
+ IE:
384
+ * support for alert credentials (issue #1698, thanks Alan Baird & trabulmonkee)
32
385
 
33
386
  2.52.0 (2016-02-12)
34
387
  ===================
data/LICENSE CHANGED
@@ -187,7 +187,7 @@
187
187
  same "printed page" as the copyright notice for easier
188
188
  identification within third-party archives.
189
189
 
190
- Copyright [yyyy] [name of copyright owner]
190
+ Copyright 2016 Software Freedom Conservancy (SFC)
191
191
 
192
192
  Licensed under the Apache License, Version 2.0 (the "License");
193
193
  you may not use this file except in compliance with the License.
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # selenium-webdriver
2
2
 
3
3
  This gem provides Ruby bindings for WebDriver
4
- and has been tested to work on MRI (1.9.2 through 2.1),
5
- JRuby and Rubinius.
4
+ and has been tested to work on MRI (2.0 through 2.2),
6
5
 
7
6
  ## Install
8
7
 
@@ -17,7 +16,7 @@ JRuby and Rubinius.
17
16
 
18
17
  ## License
19
18
 
20
- Copyright 2009-2015 Software Freedom Conservancy
19
+ Copyright 2009-2017 Software Freedom Conservancy
21
20
 
22
21
  Licensed to the Software Freedom Conservancy (SFC) under one
23
22
  or more contributor license agreements. See the NOTICE file
@@ -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
@@ -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,6 @@ require 'selenium/webdriver/common/socket_poller'
22
20
  require 'net/http'
23
21
 
24
22
  module Selenium
25
-
26
23
  #
27
24
  # Wraps the remote server jar
28
25
  #
@@ -66,59 +63,72 @@ module Selenium
66
63
  # Download the given version of the selenium-server-standalone jar.
67
64
  #
68
65
 
69
- def self.download(required_version)
70
- required_version = latest if required_version == :latest
71
- download_file_name = "selenium-server-standalone-#{required_version}.jar"
66
+ class << self
67
+ def download(required_version)
68
+ required_version = latest if required_version == :latest
69
+ download_file_name = "selenium-server-standalone-#{required_version}.jar"
72
70
 
73
- if File.exists? download_file_name
74
- return download_file_name
75
- end
71
+ return download_file_name if File.exist? download_file_name
76
72
 
77
- begin
78
- open(download_file_name, "wb") do |destination|
79
- net_http.start("selenium-release.storage.googleapis.com") do |http|
80
- resp = http.request_get("/#{required_version[/(\d+\.\d+)\./, 1]}/#{download_file_name}") do |response|
81
- total = response.content_length
82
- progress = 0
83
- segment_count = 0
84
-
85
- response.read_body do |segment|
86
- progress += segment.length
87
- segment_count += 1
88
-
89
- if segment_count % 15 == 0
90
- percent = (progress.to_f / total.to_f) * 100
91
- print "#{CL_RESET}Downloading #{download_file_name}: #{percent.to_i}% (#{progress} / #{total})"
92
- segment_count = 0
93
- end
73
+ begin
74
+ open(download_file_name, 'wb') do |destination|
75
+ net_http.start('selenium-release.storage.googleapis.com') do |http|
76
+ resp = http.request_get("/#{required_version[/(\d+\.\d+)\./, 1]}/#{download_file_name}") do |response|
77
+ total = response.content_length
78
+ progress = 0
79
+ segment_count = 0
80
+
81
+ response.read_body do |segment|
82
+ progress += segment.length
83
+ segment_count += 1
94
84
 
95
- destination.write(segment)
85
+ if (segment_count % 15).zero?
86
+ percent = (progress.to_f / total.to_f) * 100
87
+ print "#{CL_RESET}Downloading #{download_file_name}: #{percent.to_i}% (#{progress} / #{total})"
88
+ segment_count = 0
89
+ end
90
+
91
+ destination.write(segment)
92
+ end
96
93
  end
97
- end
98
94
 
99
- unless resp.kind_of? Net::HTTPSuccess
100
- raise Error, "#{resp.code} for #{download_file_name}"
95
+ unless resp.is_a? Net::HTTPSuccess
96
+ raise Error, "#{resp.code} for #{download_file_name}"
97
+ end
101
98
  end
102
99
  end
100
+ rescue
101
+ FileUtils.rm download_file_name if File.exist? download_file_name
102
+ raise
103
103
  end
104
- rescue
105
- FileUtils.rm download_file_name if File.exists? download_file_name
106
- raise
104
+
105
+ download_file_name
107
106
  end
108
107
 
109
- download_file_name
110
- end
108
+ #
109
+ # Ask Google Code what the latest selenium-server-standalone version is.
110
+ #
111
111
 
112
- #
113
- # Ask Google Code what the latest selenium-server-standalone version is.
114
- #
112
+ def latest
113
+ require 'rexml/document'
114
+ net_http.start('selenium-release.storage.googleapis.com') do |http|
115
+ REXML::Document.new(http.get('/').body).root.get_elements('//Contents/Key').map do |e|
116
+ e.text[/selenium-server-standalone-(\d+\.\d+\.\d+)\.jar/, 1]
117
+ end.compact.max
118
+ end
119
+ end
120
+
121
+ def net_http
122
+ http_proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
115
123
 
116
- def self.latest
117
- require 'rexml/document'
118
- net_http.start("selenium-release.storage.googleapis.com") do |http|
119
- REXML::Document.new(http.get("/").body).root.get_elements("//Contents/Key").map { |e|
120
- e.text[/selenium-server-standalone-(\d+\.\d+\.\d+)\.jar/, 1]
121
- }.compact.max
124
+ if http_proxy
125
+ http_proxy = "http://#{http_proxy}" unless http_proxy.start_with?('http://')
126
+ uri = URI.parse(http_proxy)
127
+
128
+ Net::HTTP::Proxy(uri.host, uri.port)
129
+ else
130
+ Net::HTTP
131
+ end
122
132
  end
123
133
  end
124
134
 
@@ -162,7 +172,7 @@ module Selenium
162
172
  raise Errno::ENOENT, jar unless File.exist?(jar)
163
173
 
164
174
  @jar = jar
165
- @host = "127.0.0.1"
175
+ @host = '127.0.0.1'
166
176
  @port = opts.fetch(:port, 4444)
167
177
  @timeout = opts.fetch(:timeout, 30)
168
178
  @background = opts.fetch(:background, false)
@@ -180,7 +190,7 @@ module Selenium
180
190
 
181
191
  def stop
182
192
  begin
183
- Net::HTTP.get(@host, "/selenium-server/driver/?cmd=shutDownSeleniumServer", @port)
193
+ Net::HTTP.get(@host, '/selenium-server/driver/?cmd=shutDownSeleniumServer', @port)
184
194
  rescue Errno::ECONNREFUSED
185
195
  end
186
196
 
@@ -195,7 +205,7 @@ module Selenium
195
205
  end
196
206
 
197
207
  def <<(arg)
198
- if arg.kind_of?(Array)
208
+ if arg.is_a?(Array)
199
209
  @additional_args += arg
200
210
  else
201
211
  @additional_args << arg.to_s
@@ -204,19 +214,6 @@ module Selenium
204
214
 
205
215
  private
206
216
 
207
- def self.net_http
208
- http_proxy = ENV['http_proxy'] || ENV['HTTP_PROXY']
209
-
210
- if http_proxy
211
- http_proxy = "http://#{http_proxy}" unless http_proxy.start_with?("http://")
212
- uri = URI.parse(http_proxy)
213
-
214
- Net::HTTP::Proxy(uri.host, uri.port)
215
- else
216
- Net::HTTP
217
- end
218
- end
219
-
220
217
  def stop_process
221
218
  return unless @process.alive?
222
219
 
@@ -233,11 +230,16 @@ module Selenium
233
230
 
234
231
  def process
235
232
  @process ||= (
236
- cp = ChildProcess.build("java", "-jar", @jar, "-port", @port.to_s, *@additional_args)
233
+ # extract any additional_args that start with -D as options
234
+ properties = @additional_args.dup - @additional_args.delete_if { |arg| arg[/^-D/] }
235
+ server_command = ['java'] + properties + ['-jar', @jar, '-port', @port.to_s] + @additional_args
236
+ cp = ChildProcess.build(*server_command)
237
+ WebDriver.logger.debug("Executing Process #{server_command}")
238
+
237
239
  io = cp.io
238
240
 
239
- if @log.kind_of?(String)
240
- @log_file = File.open(@log, "w")
241
+ if @log.is_a?(String)
242
+ @log_file = File.open(@log, 'w')
241
243
  io.stdout = io.stderr = @log_file
242
244
  elsif @log
243
245
  io.inherit!
@@ -250,20 +252,17 @@ module Selenium
250
252
  end
251
253
 
252
254
  def poll_for_service
253
- unless socket.connected?
254
- raise Error, "remote server not launched in #{@timeout} seconds"
255
- end
255
+ return if socket.connected?
256
+ raise Error, "remote server not launched in #{@timeout} seconds"
256
257
  end
257
258
 
258
259
  def poll_for_shutdown
259
- unless socket.closed?
260
- raise Error, "remote server not stopped in #{@timeout} seconds"
261
- end
260
+ return if socket.closed?
261
+ raise Error, "remote server not stopped in #{@timeout} seconds"
262
262
  end
263
263
 
264
264
  def socket
265
265
  @socket ||= WebDriver::SocketPoller.new(@host, @port, @timeout)
266
266
  end
267
-
268
267
  end # Server
269
268
  end # Selenium