selenium-webdriver 3.0.0.beta4.0 → 4.0.0.alpha5

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

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

664
+
665
+ Chrome:
666
+ * Fix bug in switches (thanks danvine)

667
+
668
+ 3.0.1 (2016-11-06)
669
+ ===================
670
+
671
+ Ruby:
672
+ * Always send JSON Wire Protocol commands to server instead of W3C commands
673
+
674
+ 3.0.0 (2016-10-13)
675
+ ===================
676
+
677
+ Firefox:
678
+ * Update :firefox_options support for geckodriver 0.11
679
+
1
680
  3.0.0.beta4 (2016-09-29)
2
681
  ===================
3
682