selenium-webdriver 3.0.0.beta3.1 → 4.0.0.alpha4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGES +692 -0
  3. data/Gemfile +2 -0
  4. data/LICENSE +1 -1
  5. data/README.md +1 -1
  6. data/lib/selenium-webdriver.rb +2 -2
  7. data/lib/selenium/server.rb +23 -16
  8. data/lib/selenium/webdriver.rb +43 -25
  9. data/lib/selenium/webdriver/atoms.rb +20 -1
  10. data/lib/selenium/webdriver/atoms/findElements.js +122 -0
  11. data/lib/selenium/webdriver/atoms/getAttribute.js +84 -9
  12. data/lib/selenium/webdriver/atoms/isDisplayed.js +100 -0
  13. data/lib/selenium/webdriver/chrome.rb +15 -20
  14. data/lib/selenium/webdriver/chrome/bridge.rb +30 -98
  15. data/lib/selenium/webdriver/{edge/service.rb → chrome/driver.rb} +19 -22
  16. data/lib/selenium/webdriver/chrome/options.rb +221 -0
  17. data/lib/selenium/webdriver/chrome/profile.rb +15 -12
  18. data/lib/selenium/webdriver/chrome/service.rb +20 -20
  19. data/lib/selenium/webdriver/common.rb +19 -11
  20. data/lib/selenium/webdriver/common/action_builder.rb +98 -246
  21. data/lib/selenium/webdriver/common/alert.rb +2 -7
  22. data/lib/selenium/webdriver/common/driver.rb +89 -55
  23. data/lib/selenium/webdriver/common/driver_extensions/downloads_files.rb +45 -0
  24. data/lib/selenium/webdriver/common/driver_extensions/has_addons.rb +50 -0
  25. data/lib/selenium/webdriver/common/driver_extensions/{has_input_devices.rb → has_debugger.rb} +12 -25
  26. data/lib/selenium/webdriver/common/driver_extensions/has_devtools.rb +38 -0
  27. data/lib/selenium/webdriver/common/driver_extensions/has_location.rb +3 -5
  28. data/lib/selenium/webdriver/common/driver_extensions/has_network_conditions.rb +51 -0
  29. data/lib/selenium/webdriver/common/driver_extensions/has_network_connection.rb +3 -3
  30. data/lib/selenium/webdriver/common/driver_extensions/has_permissions.rb +51 -0
  31. data/lib/selenium/webdriver/common/driver_extensions/has_remote_status.rb +2 -2
  32. data/lib/selenium/webdriver/common/driver_extensions/has_session_id.rb +2 -2
  33. data/lib/selenium/webdriver/common/driver_extensions/has_web_storage.rb +2 -2
  34. data/lib/selenium/webdriver/common/driver_extensions/rotatable.rb +4 -4
  35. data/lib/selenium/webdriver/common/driver_extensions/takes_screenshot.rb +9 -3
  36. data/lib/selenium/webdriver/common/driver_extensions/uploads_files.rb +3 -5
  37. data/lib/selenium/webdriver/common/element.rb +32 -10
  38. data/lib/selenium/webdriver/common/error.rb +103 -121
  39. data/lib/selenium/webdriver/common/file_reaper.rb +3 -5
  40. data/lib/selenium/webdriver/common/html5/local_storage.rb +2 -2
  41. data/lib/selenium/webdriver/common/html5/session_storage.rb +2 -2
  42. data/lib/selenium/webdriver/common/html5/shared_web_storage.rb +3 -2
  43. data/lib/selenium/webdriver/common/interactions/input_device.rb +54 -0
  44. data/lib/selenium/webdriver/{safari/apple_bridge.rb → common/interactions/interaction.rb} +23 -21
  45. data/lib/selenium/webdriver/{phantomjs.rb → common/interactions/interactions.rb} +17 -20
  46. data/lib/selenium/webdriver/common/interactions/key_actions.rb +145 -0
  47. data/lib/selenium/webdriver/common/interactions/key_input.rb +66 -0
  48. data/lib/selenium/webdriver/{safari/browser.rb → common/interactions/none_input.rb} +12 -14
  49. data/lib/selenium/webdriver/common/interactions/pointer_actions.rb +363 -0
  50. data/lib/selenium/webdriver/common/interactions/pointer_input.rb +139 -0
  51. data/lib/selenium/webdriver/common/keys.rb +37 -15
  52. data/lib/selenium/webdriver/common/log_entry.rb +4 -4
  53. data/lib/selenium/webdriver/common/logger.rb +147 -0
  54. data/lib/selenium/webdriver/common/logs.rb +2 -2
  55. data/lib/selenium/webdriver/common/manager.rb +177 -0
  56. data/lib/selenium/webdriver/common/navigation.rb +2 -2
  57. data/lib/selenium/webdriver/common/options.rb +47 -105
  58. data/lib/selenium/webdriver/common/platform.rb +44 -38
  59. data/lib/selenium/webdriver/common/port_prober.rb +8 -19
  60. data/lib/selenium/webdriver/common/profile_helper.rb +13 -5
  61. data/lib/selenium/webdriver/common/proxy.rb +14 -8
  62. data/lib/selenium/webdriver/common/search_context.rb +16 -20
  63. data/lib/selenium/webdriver/common/service.rb +115 -30
  64. data/lib/selenium/webdriver/common/socket_lock.rb +12 -7
  65. data/lib/selenium/webdriver/common/socket_poller.rb +29 -22
  66. data/lib/selenium/webdriver/common/target_locator.rb +6 -6
  67. data/lib/selenium/webdriver/common/timeouts.rb +2 -2
  68. data/lib/selenium/webdriver/common/wait.rb +14 -8
  69. data/lib/selenium/webdriver/common/window.rb +38 -2
  70. data/lib/selenium/webdriver/common/zipper.rb +3 -5
  71. data/lib/selenium/webdriver/edge.rb +25 -21
  72. data/lib/selenium/webdriver/edge_chrome/bridge.rb +30 -0
  73. data/lib/selenium/webdriver/edge_chrome/driver.rb +38 -0
  74. data/lib/selenium/webdriver/{common/driver_extensions/has_touch_screen.rb → edge_chrome/options.rb} +10 -12
  75. data/lib/selenium/webdriver/edge_chrome/profile.rb +33 -0
  76. data/lib/selenium/webdriver/edge_chrome/service.rb +36 -0
  77. data/lib/selenium/webdriver/edge_html/driver.rb +39 -0
  78. data/lib/selenium/webdriver/edge_html/options.rb +91 -0
  79. data/lib/selenium/webdriver/edge_html/service.rb +47 -0
  80. data/lib/selenium/webdriver/firefox.rb +24 -29
  81. data/lib/selenium/webdriver/firefox/bridge.rb +15 -54
  82. data/lib/selenium/webdriver/firefox/{util.rb → driver.rb} +13 -19
  83. data/lib/selenium/webdriver/firefox/extension.rb +28 -8
  84. data/lib/selenium/webdriver/firefox/options.rb +162 -0
  85. data/lib/selenium/webdriver/firefox/profile.rb +23 -82
  86. data/lib/selenium/webdriver/firefox/profiles_ini.rb +5 -5
  87. data/lib/selenium/webdriver/firefox/service.rb +18 -37
  88. data/lib/selenium/webdriver/ie.rb +13 -19
  89. data/lib/selenium/webdriver/ie/driver.rb +40 -0
  90. data/lib/selenium/webdriver/ie/options.rb +118 -0
  91. data/lib/selenium/webdriver/ie/service.rb +20 -20
  92. data/lib/selenium/webdriver/remote.rb +15 -17
  93. data/lib/selenium/webdriver/remote/bridge.rb +281 -299
  94. data/lib/selenium/webdriver/remote/capabilities.rb +102 -85
  95. data/lib/selenium/webdriver/remote/commands.rb +132 -192
  96. data/lib/selenium/webdriver/remote/driver.rb +52 -0
  97. data/lib/selenium/webdriver/remote/http/common.rb +23 -13
  98. data/lib/selenium/webdriver/remote/http/curb.rb +10 -7
  99. data/lib/selenium/webdriver/remote/http/default.rb +52 -32
  100. data/lib/selenium/webdriver/remote/http/persistent.rb +8 -4
  101. data/lib/selenium/webdriver/remote/response.rb +32 -35
  102. data/lib/selenium/webdriver/remote/server_error.rb +2 -2
  103. data/lib/selenium/webdriver/safari.rb +26 -41
  104. data/lib/selenium/webdriver/safari/bridge.rb +51 -0
  105. data/lib/selenium/webdriver/safari/driver.rb +41 -0
  106. data/lib/selenium/webdriver/safari/options.rb +32 -27
  107. data/lib/selenium/webdriver/safari/service.rb +8 -24
  108. data/lib/selenium/webdriver/support.rb +3 -2
  109. data/lib/selenium/webdriver/support/abstract_event_listener.rb +2 -2
  110. data/lib/selenium/webdriver/support/block_event_listener.rb +3 -3
  111. data/lib/selenium/webdriver/support/color.rb +13 -13
  112. data/lib/selenium/webdriver/support/escaper.rb +2 -2
  113. data/lib/selenium/webdriver/support/event_firing_bridge.rb +4 -4
  114. data/lib/selenium/webdriver/support/relative_locator.rb +51 -0
  115. data/lib/selenium/webdriver/support/select.rb +20 -21
  116. data/lib/selenium/webdriver/version.rb +24 -0
  117. data/selenium-webdriver.gemspec +31 -17
  118. metadata +331 -253
  119. data/lib/selenium/webdriver/common/bridge_helper.rb +0 -82
  120. data/lib/selenium/webdriver/common/keyboard.rb +0 -69
  121. data/lib/selenium/webdriver/common/mouse.rb +0 -88
  122. data/lib/selenium/webdriver/common/touch_action_builder.rb +0 -81
  123. data/lib/selenium/webdriver/common/touch_screen.rb +0 -121
  124. data/lib/selenium/webdriver/common/w3c_error.rb +0 -191
  125. data/lib/selenium/webdriver/edge/bridge.rb +0 -100
  126. data/lib/selenium/webdriver/edge/legacy_support.rb +0 -117
  127. data/lib/selenium/webdriver/firefox/binary.rb +0 -186
  128. data/lib/selenium/webdriver/firefox/extension/prefs.json +0 -69
  129. data/lib/selenium/webdriver/firefox/extension/webdriver.xpi +0 -0
  130. data/lib/selenium/webdriver/firefox/launcher.rb +0 -114
  131. data/lib/selenium/webdriver/firefox/native/linux/amd64/x_ignore_nofocus.so +0 -0
  132. data/lib/selenium/webdriver/firefox/native/linux/x86/x_ignore_nofocus.so +0 -0
  133. data/lib/selenium/webdriver/firefox/w3c_bridge.rb +0 -64
  134. data/lib/selenium/webdriver/ie/bridge.rb +0 -81
  135. data/lib/selenium/webdriver/phantomjs/bridge.rb +0 -76
  136. data/lib/selenium/webdriver/phantomjs/service.rb +0 -66
  137. data/lib/selenium/webdriver/remote/w3c_bridge.rb +0 -681
  138. data/lib/selenium/webdriver/remote/w3c_capabilities.rb +0 -228
  139. data/lib/selenium/webdriver/remote/w3c_commands.rb +0 -135
  140. data/lib/selenium/webdriver/safari/legacy_bridge.rb +0 -138
  141. data/lib/selenium/webdriver/safari/resources/client.js +0 -56
  142. data/lib/selenium/webdriver/safari/server.rb +0 -181
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 647fecf40e43d61c08f4af3959f658b273b936d8d2bfd20e2f04df74141d55ee
4
+ data.tar.gz: ee974415db62e12f61bcddda93a41214775596af984ee652c30d36f96b0bd824
5
+ SHA512:
6
+ metadata.gz: 0b085ce9003a2fdbb2fc8106729f788a55ada4ee94eb97b554354a16cbadba8c55124dc2e1ea68346ca54707ab80e740bd57eab8b63adb8b19a338a2792a291f
7
+ data.tar.gz: 8655c99a42675c964bdff9a63c19c7b9513e203b701985a6b55b4c0f4237d07c3da182d51b7fdad491ab87415026d272cf3939a24ac1df6d96fba18944f3b54e
data/CHANGES CHANGED
@@ -1,3 +1,695 @@
1
+ 4.0.0.alpha4 (2020-01-09)
2
+ =========================
3
+
4
+ Ruby:
5
+ * Added initial support for relative locators, which allow to find elements
6
+ above/below/left/right/near another element. For example, you can find all
7
+ the cells in a table to the right of your starting cell:
8
+ start_cell = driver.find_element(css: 'td')
9
+ right_cells = driver.find_elements(relative: {tag_name: 'td', right: start_cell})
10
+ The documentation is still lacking so refer to examples in df6be2e962.
11
+ * Added ability to silence certain logger messages by using it's identifiers:
12
+ Selenium::WebDriver.logger.ignore(:driver_path)
13
+ * Added new dependency: websocket. It's used for communicating with Chrome DevTools.
14
+ * Loosened childprocess dependency to allow using version 2.0+.
15
+ * Loosened rubyzip dependency to allow using version 2.0+.
16
+ * Fixed Errno::EACCES error on Linux DeX and similar distributes
17
+
18
+ Chrome:
19
+ * Added initial support for communicating with Chrome DevTools. The implementation
20
+ is very basic and lacks CDP domains, events and types - those will be added
21
+ in future releases. Still, it allows to execute simple commands to DevTools:
22
+ driver.devtools.send('Page.navigate', {url: 'https://google.com'})
23
+
24
+ 4.0.0.alpha3 (2019-07-08)
25
+ =========================
26
+
27
+ Ruby:
28
+ * All documented driver capabilities supported in respective browser Options class by constructor and accessor
29
+ * Driver constructor :options and :desired_capabilities generate the same capabilities for local and remote execution
30
+ * Deprecated :options as keyword for initializing browser Options classes
31
+
32
+ Chrome:
33
+ * Add support for browser logging with latest versions of chromedriver
34
+
35
+ Edge:
36
+ * Add support for Chromium based implementation
37
+
38
+ 4.0.0.alpha2 (2019-05-02)
39
+ =========================
40
+
41
+ Ruby:
42
+ * Fixed an issue with previous alpha release which lead to removed files
43
+ being packaged inside the gem
44
+
45
+ 4.0.0.alpha1 (2019-05-01)
46
+ =========================
47
+
48
+ Ruby:
49
+ * Removed Mouse and Keyboard as their implementations are not compliant to WebDriver specification
50
+ * Removed TouchActionBuilder as its implementation is not compliant to WebDriver specification
51
+ * Change ActionBuilder to be fully compliant to WebDriver specification
52
+ * Change Manager to be fully compliant to WebDriver specification
53
+ * Removed all deprecated errors that are not compliant to WebDriver specification
54
+ * Update minimum required Ruby version to 2.4
55
+ * Changed capabilities to use only those that are compliant to WebDriver specification
56
+ * Removed deprecated timeout setter on default HTTP client
57
+ * Removed deprecated Remote::W3C::Capabilities
58
+ * Fixed an issue when services are not shutdown properly
59
+
60
+ Chrome:
61
+ * Removed support for OSS mode - use W3C mode instead by using
62
+ Selenium::WebDriver::Chrome::Options.new(options: {w3c: true})
63
+
64
+ PhantomJS:
65
+ * Removed support for PhantomJS driver
66
+
67
+ Firefox:
68
+ * Removed support for legacy Firefox driver - use GeckoDriver instead
69
+ * Removed deprecated outdated capabilities
70
+ * Fixed an issue when passing :profile string to Firefox::Options.new would
71
+ result in NoMethodError. Now it will find a profile with such name on your
72
+ system and use it accordingly (issue #7119)
73
+
74
+ 3.142.7 (2019-12-27)
75
+ ====================
76
+
77
+ Ruby:
78
+ * Fix keyword argument deprecations in Ruby 2.7 (thanks @connorshea)
79
+
80
+ 3.142.6 (2019-10-04)
81
+ ====================
82
+
83
+ Ruby:
84
+ * Loosen ChildProcess dependency so that 3.0+ can be used (thanks @jaredbeck)
85
+
86
+ 3.142.5 (2019-10-01)
87
+ ====================
88
+
89
+ Ruby:
90
+ * Loosen RubyZip dependency so that 1.3+ can be used (thanks @vtamara)
91
+
92
+ 3.142.4 (2019-09-02)
93
+ ====================
94
+
95
+ Chrome:
96
+ * Added support for new command for getting logs in ChromeDriver 76+
97
+ with W3C mode on
98
+
99
+ 3.142.3 (2019-05-21)
100
+ ====================
101
+
102
+ Firefox:
103
+ * Fixed a regression when Firefox binary path was not sent to GeckoDriver
104
+ by default and browser could not be located (issue #7219)
105
+
106
+ 3.142.2 (2019-05-11)
107
+ ====================
108
+
109
+ Chrome:
110
+ * Fixed an issue when getting/setting network conditions and sending CDP
111
+ commands didn't work with Grid (issue #7174)
112
+
113
+ Safari:
114
+ * Fixed an issue when getting/setting permissions and attaching debugger
115
+ didn't work with Grid (issue #7174)
116
+
117
+ 3.142.1 (2019-05-07)
118
+ ====================
119
+
120
+ Firefox:
121
+ * Fixed an issue when processing error in legacy driver would result
122
+ in NoMethodError (issue #7178)
123
+
124
+ 3.142.0 (2019-04-24)
125
+ ====================
126
+
127
+ Ruby:
128
+ * Fixed an issue when services are not shutdown properly
129
+
130
+ Firefox:
131
+ * Fixed an issue when passing :profile string to Firefox::Options.new would
132
+ result in NoMethodError. Now it will find a profile with such name on your
133
+ system and use it accordingly (issue #7119)
134
+ * Fixed an issue when instantiating Firefox driver with capabilities having
135
+ :marionette would result in NoMethodError (issue #7120)
136
+
137
+ 3.141.5926 (2019-04-18)
138
+ =======================
139
+
140
+ Ruby:
141
+ * Fixed an issue when Selenium itself would print deprecation warning
142
+ for TimeoutError
143
+ * Fixed a regression when socket poller would raise Errno::EBADF on JRuby
144
+
145
+ 3.141.592 (2019-04-18)
146
+ ======================
147
+
148
+ Ruby:
149
+ * Updated minimum required Ruby version to 2.3
150
+ * Added support for ChildProcess 1.x
151
+ * Improved socket connection waiting (thanks @N0xFF)
152
+ * Changed waiting to use monotonic clock instead of Time class to avoid
153
+ collisions with Timecop and similar gems
154
+ * Removed deprecated PortProber.random
155
+ * Added strictFileInteractability to the list of known capabilities
156
+ * Added InsecureCertificateError
157
+ * Added support for setting SOCKS version in proxy (issue #6938)
158
+ * Implemented new window command using driver.manage.new_window. The command
159
+ is supported by recent Firefox, Safari and IE drivers (thanks @dylanlive)
160
+ * Added support for passing proc to driver_path setter in Service classes
161
+ * Deprecated all errors which don't exist in WebDriver specification
162
+ * Deprecated TouchActionBuilder which is not a part of WebDriver specification
163
+ and is only supported by Chrome, but is likely to be dropped in v75.
164
+ ActionBuilder should be used instead
165
+ * Deprecated using Remote::W3C::Capabilities in favor of Remote::Capabilities
166
+
167
+ Chrome:
168
+ * Added support for execute CDP commands using Driver#execute_cdp
169
+ * Removed GPU disabling in ChromeDriver when using Options#headless!
170
+ * Switched suggested download URL to HTTPS (thanks @JLLeitschuh)
171
+ * Added support for instantiating service class directly and moved all driver
172
+ executable configuration there (command-line arguments, port, etc.)
173
+ Passing driver_opts, driver_path and port to driver initializer is now
174
+ deprecated so use Selenium::WebDriver::Service.chrome instead, which allows
175
+ to customize executable behavior in similar way. Once initialized, this
176
+ object can be passed as :service keyword during driver initialization.
177
+ * Deprecated Chrome.driver_path= in favor of Service::Chrome.driver_path=
178
+
179
+ Edge:
180
+ * Added support for instantiating service class directly and moved all driver
181
+ executable configuration there (command-line arguments, port, etc.)
182
+ Passing driver_opts, driver_path and port to driver initializer is now
183
+ deprecated so use Selenium::WebDriver::Service.firefox instead, which allows
184
+ to customize executable behavior in similar way. Once initialized, this
185
+ object can be passed as :service keyword during driver initialization
186
+ * Deprecated Edge.driver_path= in favor of Service::Edge.driver_path=
187
+
188
+ Firefox:
189
+ * Deprecated legacy driver in favor of GeckoDriver
190
+ * Fixed Firefox path lookup on Cygwin (issue #6908)
191
+ * Added support for instantiating service class directly and moved all driver
192
+ executable configuration there (command-line arguments, port, etc.)
193
+ Passing driver_opts, driver_path and port to driver initializer is now
194
+ deprecated so use Selenium::WebDriver::Service.firefox instead, which allows
195
+ to customize executable behavior in similar way. Once initialized, this
196
+ object can be passed as :service keyword during driver initialization
197
+ * Deprecated Firefox.driver_path= in favor of Service::Firefox.driver_path=
198
+ * Deprecated outdated capabilities
199
+
200
+ IE:
201
+ * Fixed an issue when native events could not be disabled using IE::Options
202
+ initializer
203
+ * Added support for instantiating service class directly and moved all driver
204
+ executable configuration there (command-line arguments, port, etc.)
205
+ Passing driver_opts, driver_path and port to driver initializer is now
206
+ deprecated so use Selenium::WebDriver::Service.ie instead, which allows
207
+ to customize executable behavior in similar way. Once initialized, this
208
+ object can be passed as :service keyword during driver initialization
209
+ * Deprecated IE.driver_path= in favor of Service::IE.driver_path=
210
+
211
+ Safari:
212
+ * Added support for instantiating service class directly and moved all driver
213
+ executable configuration there (command-line arguments, port, etc.)
214
+ Passing driver_opts, driver_path and port to driver initializer is now
215
+ deprecated so use Selenium::WebDriver::Service.safari instead, which allows
216
+ to customize executable behavior in similar way. Once initialized, this
217
+ object can be passed as :service keyword during driver initialization
218
+ * Deprecated Safari.driver_path= in favor of Service::Safari.driver_path=
219
+
220
+ Remote:
221
+ * Change default HTTP client to use persistent connections
222
+
223
+ 3.141.0 (2018-10-31)
224
+ ====================
225
+
226
+ Edge:
227
+ * Added new Edge::Options class that should be used to customize browser
228
+ behavior. The instance of options class can be passed to driver
229
+ initialization using :options key. Please, note that using options require
230
+ insiders builds of Edge.
231
+
232
+ Chrome:
233
+ * Included HasLocation to Chrome driver (thanks @sidonath).
234
+ * Updated endpoint to send Chrome Debugging Protocol commands. The old one
235
+ has been deprecated in ChromeDriver 40.
236
+
237
+ Safari:
238
+ * Added new Safari::Options class that should be used to customize browser
239
+ behavior. The instance of options class can be passed to driver
240
+ initialization using :options key. Please, note that using options require
241
+ Safari 12+.
242
+
243
+ Remote:
244
+ * Allow passing Options instances to remote driver initialization using
245
+ :options key. This feature allows to use browser-specific options classes
246
+ (Chrome::Options, Firefox::Options, etc.) and pass them to Server/Grid
247
+ instead of capabilities.
248
+
249
+ 3.14.1 (2018-10-03)
250
+ ===================
251
+
252
+ Ruby:
253
+ * Added a workaround to ignore Errno::EALREADY error when starting drivers
254
+ on Windows Subsystem for Linux
255
+ * Changed default pause duration to 0 for Selenium::WebDriver::Driver#action#pause (thanks @twalpole)
256
+ * Deprecated Selenium::WebDriver::PortProber#random
257
+ in favor of Selenium::WebDriver::PortProber#above
258
+ * Fixed a bug when Selenium::WebDriver::Element#drag_and_drop would not
259
+ work in certain cases
260
+ * Updated RubyZip dependency to 1.2.2 which fixes security vulnerability
261
+
262
+ Edge:
263
+ * Added support for --silent driver flag
264
+ * Fixed an incorrect dash symbol when passing arguments to MicrosoftWebDriver.exe
265
+
266
+ Firefox:
267
+ * Fixed an incorrect dash symbol when passing arguments to GeckoDriver
268
+
269
+ Safari:
270
+ * Fixed a bug when Selenium::WebDriver::Element#displayed? would raise error
271
+ in Safari 12
272
+
273
+ 3.14.0 (2018-08-03)
274
+ ===================
275
+
276
+ Ruby:
277
+ * Allow to customize default duration of movement of pointer actions using
278
+ Driver#action#default_move_duration= (thanks @prakharrr)
279
+ * Fixed an accidentally removed Selenium::WebDriver::Error::TimeoutError (thanks @twalpole)
280
+
281
+ Server:
282
+ * Fixed an issue when Server.latest couldn't parse the version
283
+
284
+ Remote:
285
+ * Added support for uploading multiple files by passing them as a string
286
+ separated by \n to Element#send_keys. Please, note that not all the drivers
287
+ have multiple file upload implemented (tested to work in ChromeDriver).
288
+
289
+ 3.13.1 (2018-07-20)
290
+ ===================
291
+
292
+ Chrome:
293
+ * Fixed an issue when empty Chrome options would cause DevToolsActivePort issue (thanks @artplan1)
294
+
295
+ Remote:
296
+ * Support detecting local files (thanks @mskvn)
297
+
298
+ 3.13.0 (2018-06-25)
299
+ ===================
300
+
301
+ Ruby:
302
+ * Address warnings for redefined methods and uninitialized instance variables
303
+
304
+ Chrome:
305
+ * Chrome options capabilities updated to use goog:chromeOptions.
306
+ Note that Selenium now requires ChromeDriver v2.31 at minimum.
307
+ * Added ability to tell headless Chrome to save files using Driver#download_path= (thanks @pelly)
308
+
309
+ 3.12.0 (2018-05-08)
310
+ ===================
311
+
312
+ Ruby:
313
+ * Added User-Agent header to requests from Selenium to give remote
314
+ ends more visibility into distribution of clients (thanks @sah)
315
+ * Added Selenium::WebDriver::VERSION constant (thanks @sah)
316
+ * Added changelog link to RubyGems page
317
+ * Fixed a bug when requests were sent with empty Content-Type,
318
+ which should instead be application/json (issue #5615 and #5659)
319
+ * Fixed a bug when failed connection attempt was retried without
320
+ grace period for remote to resolve its problem (thanks @amckinley42)
321
+ * Fixed a bug with accidentally removed HasNetworkConnection driver extension
322
+
323
+ Chrome:
324
+ * Fixed a bug when deprecation message for using Chrome extensions
325
+ was incorrectly shown (thanks @treby)
326
+
327
+ Safari:
328
+ * Added support getting permissions via Driver#permissions
329
+ * Added support setting permissions via Driver#permissions=
330
+ * Added support enabling web inspector via Driver#attach_debugger
331
+
332
+ 3.11.0 (2018-03-11)
333
+ ===================
334
+
335
+ Ruby:
336
+ * No changes in Ruby bindings for this release
337
+
338
+ 3.10.0 (2018-03-02)
339
+ ===================
340
+
341
+ Ruby:
342
+ * Added Errno::EAFNOSUPPORT to the list of ignored errors when finding port (thanks @jtarchie)
343
+ * Added automatic conversion of noProxy to the list of strings as required
344
+ by W3C WebDriver Specification (issue #5004)
345
+
346
+ Chrome:
347
+ * Added Chrome::Options#headless! shortcut to enable headless mode (thanks @pulkitsharma07)
348
+
349
+ IE:
350
+ * Added support for getting local storage using Driver#local_storage
351
+ * Added support for getting session storage using Driver#session_storage
352
+
353
+ 3.9.0 (2018-02-06)
354
+ ==================
355
+
356
+ Ruby:
357
+ * Fixed a bug when omitted capabilities caused NoMethodError (issue #5185)
358
+ * Fixed a bug when getting page source in W3C dialect caused WebDriverError (thanks @KazuCocoa)
359
+ * Fixed a bug when getting backtrace of server error would case NoMethodError (thanks @mcking49)
360
+ * Updated YARD to ~> 0.9.11
361
+ * Updated rubyzip to ~> 1.2 (thanks @michaelglass)
362
+
363
+ Chrome:
364
+ * Added support for getting network conditions via Driver#network_conditions
365
+ * Added support for setting network conditions via Driver#network_conditions=
366
+ * Added support to allow driver respond with custom error codes (issue #5376)
367
+
368
+ Firefox:
369
+ * Improved GeckoDriver binary lookup mechanism (issue #5240)
370
+
371
+ 3.8.0 (2017-12-01)
372
+ ==================
373
+
374
+ Ruby:
375
+ * Removed deprecated Alert#authenticate
376
+ * Removed deprecated :port initialization argument of Remote::Bridge.
377
+ Use :url instead.
378
+ * Removed deprecated Selenium::WebDriver::Remote::W3CCapabilities.
379
+ Use Selenium::WebDriver::Remote::Capabilities instead.
380
+
381
+ IE:
382
+ * Remove deprecated :log_file driver initialization argument.
383
+ Use driver_opts: {log_file: ''} instead.
384
+ * Remove deprecated :log_level driver initialization argument.
385
+ Use driver_opts: {log_level: ''} instead.
386
+ * Remove deprecated :implementation driver initialization argument.
387
+ Use driver_opts: {implementation: ''} instead.
388
+ * Removed deprecated :service_args driver initialization argument.
389
+ Use driver_opts: {args: ['--some-switch']} instead.
390
+
391
+ Chrome:
392
+ * Removed deprecated :service_log_path driver initialization argument.
393
+ Use driver_opts: {log_path: 'path'} instead.
394
+ * Removed deprecated :service_args driver initialization argument.
395
+ Use driver_opts: {args: ['--some-switch']} instead.
396
+
397
+ Firefox:
398
+ * Removed deprecated :service_args driver initialization argument.
399
+ Use driver_opts: {args: ['--some-switch']} instead.
400
+
401
+ Safari:
402
+ * Removed deprecated :service_args driver initialization argument.
403
+ Use driver_opts: {args: ['--some-switch']} instead.
404
+
405
+ Edge:
406
+ * Removed deprecated :service_args driver initialization argument.
407
+ Use driver_opts: {args: ['--some-switch']} instead.
408
+
409
+ 3.7.0 (2017-11-03)
410
+ ==================
411
+
412
+ Ruby:
413
+ * Added //rb:lint task to check codebase using RuboCop (thanks @RustyNail)
414
+ * Fixed codebase to comply more to Ruby community style guide (thanks @RustyNail)
415
+ * Packaged all dependencies to Selenium repository so that non-Ruby committers
416
+ can build and test Ruby bindings easier
417
+ * Update errors list according to latest changes of specification (thanks @jaysonesmith)
418
+
419
+ Firefox:
420
+ * Added Firefox::Options#headless! shortcut to enable headless mode (thanks @franzliedke)
421
+
422
+ 3.6.0 (2017-09-25)
423
+ ==================
424
+
425
+ Edge:
426
+ * Fixed a bug when execute_script failed using server + Edge (issue #4651)
427
+
428
+ Firefox:
429
+ * Fixed a bug when web extension failed to install using profile class (issue #4093)
430
+
431
+ PhantomJS:
432
+ * Support is deprecated in favor of headless Chrome/Firefox or HTMLUnit.
433
+ PhantomJS is no longer actively developed, and support will eventually
434
+ be dropped.
435
+
436
+ 3.5.2 (2017-09-07)
437
+ ==================
438
+
439
+ Ruby:
440
+ * Removed platformVersion from W3C payload (issue #4641)
441
+ * Fixed a bug when proxy type was not compliant to specification (issue #4574)
442
+ * Added support for passing speed to flick action (issue #4549)
443
+ * Using TouchActionBuilder no longer prints mouse/key deprecations
444
+ * Deprecated Alert#authenticate
445
+ * Added support for DEBUG environment variable which enables full debug mode in gem
446
+
447
+ Firefox:
448
+ * Fixed a bug when page load timeout was not properly constructed in new session payload
449
+ * Fixed a bug when GeckoDriver error stacktrace was not displayed (issue #3683)
450
+
451
+ Chrome:
452
+ * Added workaround for the case when findElements call returns null (issue #4555)
453
+ * Chrome::Driver now includes touch actions by default
454
+
455
+ 3.5.1 (2017-08-15)
456
+ ==================
457
+
458
+ Ruby:
459
+ * Fixed a bug when Chrome/Firefox (and probably other) drivers could not be
460
+ started on JRuby (issue #4453).
461
+
462
+ 3.5.0 (2017-08-10)
463
+ ==================
464
+
465
+ Firefox:
466
+ * Firefox subprocess output is now only redirected when debug is set (issue #4311)
467
+ * Fixed a bug where non-integers could be sent when setting window rect
468
+ * Fixed Firefox location detection on Windows_x64 (thanks kamenlitchev)
469
+ * Fixed passing of profile with a W3C compatible remote end
470
+
471
+ IE:
472
+ * Added new IE::Options class that should be used to customize browser
473
+ behavior (native events, element scroll behavior, etc).
474
+ The instance of options class can be passed to driver initialization using
475
+ :options key. Old way of passing these customization directly to driver
476
+ initialization is deprecated.
477
+
478
+ 3.4.4 (2017-07-13)
479
+ ==================
480
+
481
+ Firefox:
482
+ * Added support for GeckoDriver install addon command (issue 4215).
483
+ * Added support for GeckoDriver uninstall addon command (issue 4215).
484
+ * Raise error when passing :firefox_options as capability.
485
+
486
+ Ruby:
487
+ * Fixed a bug when childprocess were leaking /dev/null file descriptor (issue 4285).
488
+ * Make Remote::Driver class so that it can be inherited from.
489
+
490
+ 3.4.3 (2017-06-16)
491
+ ==================
492
+
493
+ Ruby:
494
+ * Fixed a regression when passing symbol as :desired_capabilities caused NoMethodError (issue 4187).
495
+
496
+ 3.4.2 (2017-06-14)
497
+ ==================
498
+
499
+ Ruby:
500
+ * Added unhandledPromptBehavior to the list of known capabilities.
501
+ * Added timeouts to the list of known capabilities.
502
+ * Fixed a regression when passing hash as :desired_capabilities caused NoMethodError (issue 4172, thanks Thomas Walpole).
503
+ * Fixed a regression when extension capabilities (the ones that have ":" inside)
504
+ were filtered out when doing protocol handshake.
505
+ * Improved handling of capability names passed as plain camelCased strings
506
+ vs Rubyish snake_cased symbols when doing protocol handshake.
507
+
508
+ Chrome:
509
+ * Fixed a regression when passing :switches to driver initialization was ignored.
510
+
511
+ 3.4.1 (2017-06-13)
512
+ ==================
513
+
514
+ Ruby:
515
+ * Implemented a new dual-dialect mechanism for communication with drivers
516
+ (a.k.a. protocol handshake). There shouldn't be any noticeable differences
517
+ but since this is a significant refactoring of internal APIs, some bugs
518
+ could slip into the release.
519
+ * Renamed ElementClickIntercepted to ElementClickInterceptedError.
520
+ * Renamed ElementNotInteractable to ElementNotInteractableError.
521
+ * Deprecated W3CCapabilities in favor of Capabilities (it was meant to be private API).
522
+ * Added a warning when trying to save screenshot without .png extension (thanks @abotalov).
523
+
524
+ IE:
525
+ * Added support for both old IEDriver which uses OSS dialect of JSON wire
526
+ protocol (<= 3.4.0) and new IEDriver which uses W3C dialect (not yet released).
527
+
528
+ Safari:
529
+ * Removed runtime dependencies used for old SafariDriver (u.g. websocket).
530
+
531
+ Chrome:
532
+ * Added new Chrome::Options class that should be used to customize browser
533
+ behavior (command line arguments, extensions, preferences, mobile emulation, etc.).
534
+ The instance of options class can be passed to driver initialization using
535
+ :options key. Old way of passing these customization directly to driver
536
+ initialization is deprecated.
537
+
538
+ Firefox:
539
+ * Added new Firefox::Options class that should be used to customize browser
540
+ behavior (command line arguments, profile, preferences, Firefox binary, etc.).
541
+ The instance of options class can be passed to driver initialization using
542
+ :options key. Old way of passing these customization directly to driver
543
+ initialization is deprecated.
544
+
545
+ 3.4.0 (2017-04-21)
546
+ ===================
547
+
548
+ Edge:
549
+ * Fix bug when response is not wrapped with "value"
550
+
551
+ Firefox:
552
+ * Support geckodriver v0.16
553
+
554
+ Ruby:
555
+ * Support ElementClickIntercepted error from W3C spec
556
+ * Support ElementNotInteractable error from W3C spec
557
+ * Implement window rect commands
558
+ * Implement window minimize command
559
+
560
+ 3.3.0 (2017-03-07)
561
+ ===================
562
+
563
+ Firefox:
564
+ * geckodriver v0.15 or later is required
565
+
566
+ W3C:
567
+ * Support for command response data to be wrapped in a 'value' key
568
+ * Support for updated timeout formats
569
+
570
+ 3.2.2 (2017-03-01)
571
+ ===================
572
+
573
+ Ruby:
574
+ * Fix bug for supporting Logger output on Ruby versions < 2.3
575
+ * Add more logging and adjust output levels
576
+
577
+ Remote:
578
+ * Support for creating Remote session with browser name and url parameters
579
+
580
+ 3.2.1 (2017-02-24)
581
+ ===================
582
+
583
+ Ruby:
584
+ * Fix bug for supporting Logger on Ruby versions < 2.3
585
+
586
+ 3.2.0 (2017-02-22)
587
+ ===================
588
+
589
+ Ruby:
590
+ * Implement new Logger class
591
+ * Fix issue with chromedriver process leader incompatibility on Win7 (issue 3512)
592
+
593
+ 3.1.0 (2017-02-14)
594
+ ===================
595
+
596
+ Firefox:
597
+ * implement W3C actions endpoint
598
+
599
+ 3.0.8 (2017-02-08)
600
+ ===================
601
+
602
+ Firefox:
603
+ * Fix signature of element returned from #active_element
604
+
605
+ 3.0.7 (2017-02-06)
606
+ ===================
607
+
608
+ Firefox:
609
+ * Fix signature of element arrays returned from #find_elements (issue 3471)
610
+
611
+ 3.0.6 (2017-02-05)
612
+ ===================
613
+
614
+ Firefox:
615
+ * Implement W3C window position
616
+ * Update implementation for W3C send text to alert
617
+ * Implement timeout settings
618
+ * Remove default capabilities (thanks lmtierney)
619
+ * Fix signature of elements returned from #execute_script (thanks Thomas Walpole)
620
+
621
+ 3.0.5 (2016-12-27)
622
+ ===================
623
+
624
+ Ruby:
625
+ * Support for Ruby 2.4.0 (Thanks jamespdo)
626
+
627
+ 3.0.4 (2016-12-21)
628
+ ===================
629
+
630
+ Firefox:
631
+ * Implement profile support via geckodriver (#2933 thanks lmtierney)
632
+
633
+ Ruby:
634
+ * Fix bug preventing use of Curb client (#2951 thanks clarkenciel)
635
+ * Support Net::HTTP::Persistent version 3 (#3219 thanks Pete Johns)
636
+ * Allow Net::HTTP::Default to set open_timout and read_timeout independently (#3264 thanks richseviora)
637
+ * Change default for Net::HTTP::Default#open_timeout to facilitate debuggers (#3264 thanks richseviora)
638
+
639
+ 3.0.3 (2016-11-26)
640
+ ===================
641
+
642
+ Ruby:
643
+ * Allow drivers to be executed from batch files on Windows
644
+
645
+ 3.0.2 (2016-11-25)
646
+ ===================
647
+
648
+ Ruby:
649
+ * Implement #driver_path as parameter when initializing a driver (thanks lmtierney)
650
+ * Improve Ruby syntax in driver commands (thanks joe_schulte)
651
+ * Improve performance when shutting down drivers (thanks lmtierney)
652
+ * Fix bug for finding open ports on Windows (thanks kou1okada)
653
+ * Fix bug in auto detection of drivers which allowed selection of non-executable binaries
654
+
655
+ W3C:
656
+ * Implement #cookie_named and #delete_all_cookies methods (thanks lmtierney)

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

658
+
659
+ Chrome:
660
+ * Fix bug in switches (thanks danvine)

661
+
662
+ 3.0.1 (2016-11-06)
663
+ ===================
664
+
665
+ Ruby:
666
+ * Always send JSON Wire Protocol commands to server instead of W3C commands
667
+
668
+ 3.0.0 (2016-10-13)
669
+ ===================
670
+
671
+ Firefox:
672
+ * Update :firefox_options support for geckodriver 0.11
673
+
674
+ 3.0.0.beta4 (2016-09-29)
675
+ ===================
676
+
677
+ Ruby:
678
+ * Remove support for deprecated driver options
679
+ * Add support for latest driver options
680
+ * Add support for :port parameter for launching driver
681
+ * Add support for :service_args parameter for driver command line switches
682
+ * Improve reliability by increasing service shutdown timeout (#2815; thanks John Barbuto )

683
+
684
+ Firefox:
685
+ * Add support for :firefox_options in geckodriver
686
+
687
+ Safari:
688
+ * Remove support for legacy Safari driver (use Apple's driver built in to Safari 10+)
689
+
690
+ Chrome:
691
+ * Set chromedriver to not log by default
692
+
1
693
  3.0.0.beta3.1 (2016-09-03)
2
694
  ===================
3
695