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

Sign up to get free protection for your applications and to get access to all the features.
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