forked from SeleniumHQ/selenium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
1295 lines (1205 loc) · 67.6 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
v3.9.0
======
* Added commands to get and set network conditions for Chrome in .NET.
To get or set the network conditions, use the `NetworkConditions` property
of the ChromeDriver object. This property gets or sets a
ChromeNetworkConditions object which contains the proper values. Fixes
issue #5338.
* Readded CLSCompliant attribute to .NET assemblies. When converting from
the prior build system to using Buck and the dotnet build tools, the
assembly-level CLSCompliant attribute was removed. This commit restores
the CLSCompliant attribute to the assembly manifests. Fixes issue #5324.
* Removed check for leading hyphens in .NET FirefoxOptions AddArgument.
In prior releases of geckodriver, it was a requirement that all arguments
be preceeded by double hyphens ("--"). Geckodriver has now relaxed that
restriction, and the .NET bindings need to keep up with that change. This
commit removes the check for leading hyphens when calling AddArgument.
* Fixed strong-named assembly references. In the move to using the `dotnet`
build tools instead of calling the C# compiler directly, the creation of
strong-named assemblies was broken with incorrect references being created.
This commit fixes that problem. Fixes issue #5254.
* Exposed HostName property for .NET DriverService class. Previously, the
host name for a DriverService was hard-coded to be "localhost." This is
normally acceptable, as a DriverService is only intended to be used
locally, and most executables that are represented by a DriverService
(chromedriver, geckodriver, IEDriverServer.exe, etc.) do not even allow
connections from external machines for security reasons. However, there is
a legitimate use case (.NET Standard 2.0) where a local IP address
("127.0.0.1" or "::1") is preferrable to using the "localhost" moniker.
This HostName property allows the user to specify that IP address. Note
that the property defaults to "localhost," preserving previous behavior.
v3.8.0
======
* Updating .NET bindings setting of timeouts for spec-compliance. This
also removes some obsolete API entry points that have been marked as
deprecated for some months now. The properties of the ITimeouts object
should be used.
* Updated .NET Options classes to better support W3C Capabilities.
* Added .NET constructors to FirefoxDriver to align with other browser
drivers
v3.7.0
======
* Made .NET Interactions device classes public. Fixes issue #3989.
* Reversed the default for whether a generated capabilities payload
when creating a new session is a spec compliant payload. Fixes issue
#4758.
v3.6.0
======
* Removed internal use of deprecated construct in .NET bindings.
* Added no-format override to .NET Screenshot class for saving file,
which will save the image in a Portable Network Graphics (PNG)
format.
* Updating .NET bindings to not send incorrect W3C Firefox capabilities
Previously, RemoteWebDriver would send the same capabilities dictionary
using both the "desiredCapabilities" and "capabilities" properties when
requesting a new remote session. In the case of the language bindings
expressly requesting to use the legacy Firefox driver, the capabilities
dictionary will include properties that are invalid for the W3C-compliant
remote server. To resolve that issue, we will mask the explicit attempt by
setting a property that causes the .NET RemoteWebDriver to send a
legacy-only compatible new session request when explicitly requesting the
legacy driver. Fixes issue #4637.
* Added the output of .NET Standard 2.0 class libraries to the release
artifacts, which will allow the bindings to be used against .NET Core 2.0.
This addition marks the initial support of .NET Core in the Selenium .NET
language bindings. Use of the .NET bindings against .NET Core should be
considered experimental at this stage. The following issues are already
known, and should not be reported:
- Calls to localhost in .NET Core are slower than those in the full .NET
Framework. This is due to internal differences in the .NET libraries
themselves, and are not the fault of the bindings directly. See
https://github.com/dotnet/corefx/issues/24104 for more details.
- Attempting to save a screenshot to any graphics file format other than
Portable Network Graphics (PNG) will throw an exception. .NET Core does
not provide the image manipulation classes that the full .NET Framework
does, and there are no production-ready third-party libraries that
provide that functionality yet and also only rely on managed code. This
concern is over and above the difficulties with adding dependencies to
the language bindings.
- When using the bindings against .NET Core, there is no PageFactory
class available. This is not an oversight, nor is it a bug. The .NET
PageFactory implementation requires use of classes that are not
available in .NET Core. It is a non-trivial matter to add additional
dependencies to the .NET bindings, so simply replacing those classes
with a third-party library that is compatible with .NET Core is not a
perfectly obvious option.
- References to the .NET Standard 2.0 library versions provided in this
and future releases are only valid when using NuGet package references.
Simply copying the assembly and adding an assembly reference to the
.NET Core 2.0 project will not work. This is by design of the .NET
Core ecosystem, which is now entirely dependent on NuGet to propertly
resolve dependencies.
v3.5.2
======
* Changed .NET ChromeOptions to use "goog:chromeOptions" as property name.
This aligns with current chromedriver.exe expectations as well as with the
W3C WebDriver Specification. It also means that the .NET bindings will now
require 2.31 or later of chromedriver.exe.
* Guarding against null return value from FindElements. Fixes issue #4555
for .NET.
* Updating serialization of Proxy for W3C-compliant drivers in .NET. Fixes
issue #4574 for .NET.
* Added support for W3C 'invalid argument' error code.
* Added GetProperty method to IWebElement.
* Added support for new new window commands (Minimize and FullScreen).
* Updated .NET FirefoxOptions to not force specifying binary location. In
the Marionette/Geckodriver case, the service executable can locate the
Firefox executable on its own when looking in default installation
locations. There is no need for the language bindings to go spelunking
through the registry in that case any longer because the bindings do not
have to directly launch the Firefox executable.
* Committed initial support for .NET Core. This is only committed to the
source repository; it is not yet released in any consumable binary form.
This support will likely change significantly between now and when it is
officially released. Please do not rely on it yet.
v3.5.1
======
* Added ability to detect spec-compliant capabilities in .NET. This
release updates the .NET DesiredCapabilities class to allow the
language bindings to construct the correct type of payload for the new
session command before sending the command to the remote end. This will
remove the burden from intermediate nodes (like the Java standalone server
and grid) from incorrectly parsing a driver using the legacy protocol
dialect (Edge, Safari, Chrome) and throwing an error on session creation.
Fixes issue #4443.
* Deprecated the static methods on the DesiredCapabilities class's methods
for specific browsers in .NET. For over a year, the guidance for .NET
users has been to use a browser-specific options class (FirefoxOptions,
InternetExplorerOptions, etc.) to set specific capabilities for the driver
to be instaniated. To use the options classes with the Java standalone
remote server or grid, call the `ToCapabilities` method on the options
object.
* Removed deprecated screenshot methods. These have been deprecated
since 3.1.0.
* Removed IsJavaScriptEnabled property from DesiredCapabilities. Since
virtually all driver implementations and all browsers support JavaScript
and cannot run properly without it being enabled, this property is nearly
useless. Use SetCapability("javascriptEnabled", true) if you require this
functionality.
v3.5.0
======
* (on behalf of Matthew Lymer) Fixing the parsing of logging levels to match
the values in the LogLevel enum. Fixes issue #4121.
* Updated .NET DriverService to allow hard termination shutdown of
exectuable.s Some driver services (geckodriver, safaridriver) don't support
a shutdown HTTP end point. The base DriverSerivce class should allow for
that, and not attempt to use one if it's known the service doesn't provide
one.
v3.4.0
======
* Exposed new Interactions framework. This release introduces a new
Interactions framework using the ActionBuilder class for creating advanced
user interaction sequences in the .NET bindings. This framework is only
designed to be used with remote ends that understand the W3C WebDriver
Specification actions end point, and as such, there is no documentation
or guidance for its use at present. Most users will continue to use the
Actions class for now,bwhich works with both protocol dialects. Once most
remote ends use the W3C dialect of the wire protocol, these classes will
become more useful.
* Fixed IAlert.SendKeys to send a string instead of a character array when
communicating with remote ends that use the in the W3C Specification
dialect of the wire protocol.
* Now the "marionette" capability is only set for the case where the user
wants to use the legacy Firefox driver. Starting with Geckodriver 0.16,
this capability is not recognized as valid, since it violates the spec,
and will not create a session if it's specified.
* Updated InternetExplorerOptions to send IE-specific capabilities in a
property named "se:ieOptions". This is the correct method for passing
browser-specific capabilities according to the W3C WebDriver spec. This
should be transparent for most users, but beginning with 3.4.0.0 of the
IE driver, this is the preferred mechanism for passing IE-specific
capabilities.
* Added "acceptInsecureCerts" capability for use with remote ends that
adhere to the W3C WebDriver Specification. The default for the capability
is true.
* Updated FirefoxDriver(FirefoxOptions) constructor to allow the user to
specify `UseLegacyImplementation = true` in the FirefoxOptions passed
to the constructor and not be forced to have a copy of geckodriver
available. Fixes issue #3597.
* Updated bindings to properly use the W3C WebDriver Specification.
v3.3.0
======
* Fixed error return values from W3C spec-compliant remote ends
* Fixed pointer actions duration in .NET to be an integer
* Added ability to run .NET integration tests against Safari
Technology Preview release
* Fixed accounting for W3C spec-compliant response for new session
command that contains a 'value' property.
v3.2.0
======
* Removed .NET Selenium RC language binding implementation. As
announced previously, this release entirely removes the .NET
implementation of the Selenium RC technology stack. The RC API still
exists as part of WebDriverBackedSelenium, but is still marked as
deprecated.
* Removed ability to set vendor implementation for IE driver. This
property has been marked obsolete for awhile, but is now being removed.
v3.1.0
======
* Note that this will be the final release containing Selenium RC language
bindings for .NET. Users still relying on the RC API will be able to
continue to do so using WebDriverBackedSelenium, or by converting their
code to use WebDriver proper. Selenium RC has been deprecated for over
six years, and the .NET Selenium RC language bindings have not been
updated with a code change other than a version bump in nearly that long.
* Prepared Screenshot object for removal of direct dependency on
System.Drawing.Imaging.ImageFormat. The dependency still exists for now,
but is no longer exposed in the public API.
* Updated specification compliance for windows and timeouts APIs. The
language bindings now properly implement the local end of the W3C
WebDriver specification for getting and setting window size and position,
and for getting and setting timeouts. It also marks as obsolete the
methods for the ITimeouts interface in favor of properties, since the
specification supports getting as well as setting timeouts.
* Enabled execution of project's .NET tests from within Visual Studio. It
is now possible to execute .NET tests from within the Visual Studio IDE.
To enable this functionality, you must install the NUnit 3 Test Adapter
plug-in. To change the browser against which the tests are executed,
modify the dotnet/test/common/App.config file.
* Updated .NET upload tests to work no matter working directory
* Updated project to use NUnit 3.6.0
* Initial development of .NET implementation of W3C spec actions command.
* Refactored wire protocol serialization of IWebElements.
* Removing custom code for geckodriver since it now implements a status end
point.
v3.0.1
======
* Updated build process to include atoms resources in strong-named assemblies.
Fixes issue #3137.
v3.0.0
======
* Major release of the .NET bindings for Selenium. Selenium RC classes
and interfaces (DefaultSelenium and ISelenium) have officially been
marked with the Obsolete attribute. Please move to Selenium WebDriver
* Geckodriver is now the default mechanism for automating Firefox. This
is Mozilla's implementation of a driver for that browser, and is
required for automating Firefox versions 48 and above.
* The IE driver no longer actively supports IE 7 or 8. Only IE 9, 10, and
11 are actively supported.
* The legacy driver for Safari maintained by the Selenium project is no
longer supported. This release includes support for Apple's Safari
driver, for Safari 10, available on macOS 10.11 ("El Capitan") and 10.12
("Sierra").
* Updated to conform to the latest options schema for geckodriver. This
release expects geckodriver.exe v0.11.1 or later.
* Marked InternetExplorerDriverService.Implementation property as
deprecated. The Microsoft (vendor) implementation is no longer maintained
and will not be updated. As it never had feature parity with the open-
source implementation, the property is now unnecessary, and the feature
will be removed from IEDriverServer.exe in a future release.
v3.0.0-beta3
============
* Modified to use automation atoms for getAttribute and isDisplayed in .NET
for W3C remote ends
* Added ability to set additional command line arguments for geckodriver
v3.0.0-beta2
============
* Updated GetAttribute shim for GetAttribute method for W3C protocol remote
ends.
* Modified parameter name in SendKeys to alert for W3C protocol remote
ends.
v3.0.0-beta1
============
* The Mozilla-provided Marionette-based FirefoxDriver is now the default
implementation for automating Firefox. Additionally, this aligns the
FirefoxDriver class with other browser-specific implementations, using
a FirefoxOptions class for setting options for the browser session.
Constructors of FirefoxDriver directly referencing FirefoxProfile or
FirefoxBinary have been marked as deprecated, and will be removed in a
future release.
v2.53.0
=======
* This will be the final full release in the 2.x series. There may be
small point releases going forward, but future development will
concentrate on 3.0.
* (on behalf of arnonaxelrod) Added an overload of ExecuteJavaScript
extension method that doesn't accept a generic argument and doesn't
return a value.
* (on behalf of mohammadsavadkuhi) Corrected argument name in
exceptions thrown by DefaultWait<T>.
* Corrected trace categories for Chrome perf logging prefs in .NET.
* Added device metrics to Chrome options for mobile emulation.
* Removed .NET type-safe option for setting IE cookie capability. The
'ie.validateCookieDocumentType' has been obsolete since 2.47 of WebDriver.
This commit marks the 'ValidateCookieDocumentType' property of the
'InternetExplorerOptions' object as obsolete, and no longer sends that
capability to the driver. This property will be removed in a future
version of the .NET bindings.
v2.52.0
=======
* Updated Firefox driver to include ability to disable overlapping element
check. This includes a new constant for the name of the capability.
* Provided an implementation of the local-end logging API.
* Provided type-safe option to allow disabling of full-page screenshots when
using the IE driver.
* (on behalf of Glib Briia) Updated support library's SelectElement class to
better handle <select multiple='multiple'> elements.
v2.51.0
=======
* Updated Firefox driver which includes fixes for the clicking in overlapped
elements. In keeping with project support policy for Firefox, This driver
has been tested with Firefox 44 (current release), 43 (immediately prior
release), 38 (current ESR release), and 31 (immediately prior ESR release).
* Refactoring .NET driver Options classes to descend from common class. This
commit introduces a common base class for driver-specific type-safe Options
classes (e.g., ChromeOptions, InternetExplorerOptions, etc.). This will
help pave the way to eliminate needing to know the name or expected type
of arbitrary capabilities in a future release.
* Removed the incorrect ChromeOptions method introduced in 2.50.0.
* Added ability to add traceCategories to performance logging preferences in
ChromeOptions. Fixes issue #1591.
v2.50.1
=======
* Changed ChromeOptions to have correct EnableMobileEmulation API.
v2.50.0
=======
* Updated embedded Firefox driver with new click algorithm
* Added type-safe options .NET for recently added Chrome capabilities.
This includes adding type-safe capabilities for 'mobileEmulation',
'perfLoggingPrefs', and 'windowTypes' to ChromeOptions class.
* (on behalf Edward Ned Harvey) Updated ChromeDriverService to locate
Chrome driver executable in a cross-platform way.
* Removed deprecated PageFactory code.
* Updated implementations of EWebDriver.PageSource property and
IAlert.SendKeys method for spec-compliant browsers.
* Updated implementations for finding by ID, class name, and tag name
for consistency between languages and for compatibility with spec-
compliant drivers.
* Removed the redundant IllegalLocatorException.
v2.49.0
=======
* Updated .NET PageFactory to allow frame switching with located elements.
Previously, if you located a `<frame>` or `<iframe>` element using the
PageFactory attributes, you could not switch to it. This change allows one
to use `driver.SwitchTo().Frame(element)` with the element found via the
PageFactory.
* Added workaround for Windows 10 major version number encountered when
executing via NUnit 3.
* Issue #1316: (on behalf of Chris Block) Enhance check for value types to
exclude Nullable in extension methods. The System.Nullable type is a value
type that can be assigned the null value. This change checks for types
wrapped with Nullable and does not throw when they are encountered.
* Exposed session ID property on RemoteWebDriver. Users can now cast their
driver instance to IHasSessionId to access the SessionId property, which
returns a SessionId object. To use the SessionId object with external
tools, simply call the ToString() method on the instance. Note that
relying on the SessionId for anything is probably a Bad Thing, because it
introduces a leak in the abstraction of a driver. Please do not use this
property; its introduction is the Wrong Approach, but it's being exposed
at the insistence of a selection of users.
* Adding support for whitelisted-ips argument for Chrome and IE driver
executables.
v2.48.2
=======
* Release containing fix to Firefox driver bug when clearing input fields of
type number.
v2.48.1
=======
* Various updates in communicating with remote ends using the W3C dialect of
the JSON wire protocol.
* (on behalf of petruc) Added HTML5 functionality to .NET bindings. The .NET
bindings now include the ability to access appCache status, local and
session storage, and geolocation. Each feature has a role-based marker
interface (IHasApplicationCache, IHasWebStorage, or IHasLocationContext),
and the implementation has a boolean property to query if the driver
supports that feature. Attempting to use the feature for a driver which
does not support it will throw an exception.
* Issue #1120: Fixed deserialization of date-time data from remote ends.
* Issue #1186: Safari should only specify MAC as platform in default desired
capabilities.
v2.48.0
=======
* Supports native events for Firefox version 31 (immediately previous ESR).
Native event support has been discontinued for versions of Firefox later
than 33. Synthetic events tested on Firefox versions 31 (immediately
previous ESR), 38 (current ESR), and 40 (immediately previous release),
and 41 (current release).
* Refactored JSON deserialization for responses.
* Modified SwitchTo().Frame(string) to use client-side code instead of a
direct wire protocol call.
* Added support for the W3C Specification dialect of the JSON wire protocol
* Added initial support for Mozilla's Marionette implementation of the
Firefox driver.
v2.47.0
=======
* Supports native events for Firefox version 31 (immediately previous ESR).
Native event support has been discontinued for versions of Firefox later
than 33. Synthetic events tested on Firefox versions 31 (immediately
previous ESR), 38 (immediately previous release and current ESR), and 39
(current release).
* (provided by Microsoft) Added language bindings for Microsoft Edge browser.
* Added support for authentication dialogs in the .NET bindings.
* Replaced DotNetZip with ZipStorer library. Adds the ability to use the .NET
bindings with Firefox on Linux and OS X via Mono. The replacement library
uses the internal System.IO.Compression classes along with custom code for
reading and writing the central director structure of .zip files. The
resulting .zip files created may be slightly larger than those produced via
DotNetZip, but we will sacrifice that small size difference in exchange for
cross-platform usability.
* Fixing cookie parsing error in .NET bindings. The JSON response for cookie
expiration date is a number, not an integer. The .NET bindings were not
handling the fact that a floating point number could be included in the JSON
object as an expiration time.
* Added support to .NET bindings for HTTP-only cookies.
* Added ITakesScreenshot to .NET RemoteWebElement for spec compatibility Note
that no driver implements this at present, so attempting to use this within
any test will result in a NotImplementedException.
* Fixed dynamic assembly generation for .NET PageFactory for .NET 3.5.
v2.46.0
=======
* Supports native events for Firefox version 31 (immediately previous ESR).
Native event support has been discontinued for versions of Firefox later
than 33. Synthetic events tested on Firefox versions 31 (immediately
previous ESR), 37 (immediately previous release), and 38 (current release,
and current ESR).
* (on behalf of Darrin Cherry) Modified ExpectedConditions class to more
closely mimic the one provided by Java.
* Added ToString override to Platform class. Fixes issue #580.
* Removed Firefox profile cleaning step when launching Firefox. Firefox used
to require launching to clean up potential issues with the anonymous
temporary profile that we use with the driver. This is no longer the case.
* Added type safe support to InternetExplorerOptions for page load strategy.
* Added ability to get wrapped IWebElement from SelectElement. When using a
SelectElement wrapper class to manipulate <select> elements, the user
previously had to keep a separate reference to the IWebElement representing
the actual element. The SelectElement class now implements IWrapsElement,
exposing the WrappedElement property, which gives the user the ability to
access the underlying IWebElement. Fixes issue #350.
* (on behalf of clz.livio) Added additional PhantomJS command-line options.
Added the ProxyAuthorization property and SslCertificatesPath property to
the PhantomJSDriverSerivce class. These translate to the --proxy-auth and
--ssl-certificates-path command line options on PhantomJS respectively.
* (on behalf of clz.livio) Improved DriverService to check response on
startup. A driver using a driver service will now throw a WebDriverException
if it cannot start the driver service, or if the service executable returns
an invalid response. Note that the checks for the validation of the
repsonses is minimal, checking for the Content-Type header and that the
response code is a 200.
* (on behalf of Sergey Tikhomirov) Refactored PageFactory implementation,
including a number of changes to make it more extensible and more robust.
First, instead of the hand-rolled proxy classes that had been used
previously, this refactor introduces proxy objects based on
System.Runtime.Remoting.Proxies.RealProxy, which allows for more
flexibility in the types of objects proxied.
Second, this refactor now allows users to provide their own implementation
engines for examining attributes of Page Object classes and determining
what course to take. To create a new implementation the user must provide
an implementation of the IPageObjectMemberDecorator interface, which
determines which attributes to examine fields and properties for, and how
to create the proxy objects assigned to the members.
Third, this refactor introduces a new IElementLocator interface to Page
Object implementations, and deprecates the IElementLocatorFactory
interface. The IElementLocator interface is substantially similar to the
now-deprecated IElementLocatorFactory, but requires implementations to
provide a property to retrieve the ISearchContext implementation used to
actually find elements. The implications of this change are that
IElementLocator implementations will need to keep a reference to the
IWebDriver or IWebElement they are using. Recommended practice is for this
context to be passed in via a the IElementLocator implementation's
constructor, and this technique is demonstrated in the source code to the
two implementations provided in the regular .NET language bindings
releases.
Finally, this commit also introduces a breaking change in
IElementLocatorFactory. Developers of classes that implement this
interface will now be required to implement the CreateLocator method,
which will return a valid IElementLocator implmentation. This is to
prepare for the removal of the IElementLocatorFactory interface and its
implmentations in a future release.
* Added FindsByAllAttribute to .NET PageFactory implementation. This allows
the user to specify that an element must match the criteria of all of the
FindsBy attributes a property or field is marked with in order to be found
by the PageFactory. Previously, a class member marked with multiple FindsBy
attributes would find an element matching any of the attributes' criteria.
Because of the nature of this change, you cannot use FindsBySequence and
FindsByAll on the same class member. Attempting to do so will result in an
exception when InitElements is called.
* (on behalf of Immanuel Hayden) Added support for ByAll, finding elements
matching all locators.
* (on behalf of Chris Block) Changed ExecuteJavaScript extension method for
converting result, so that it now validates that the ExecuteJavaScript
extension method will correctly detect if the script result is convertable
to the generic type.
* (on behalf of Yi Zeng) Added constructor overload which takes in single
DriverService parameter. This pattern was already implemented in
PhantomJSDriver, but not yet in ChromeDriver and InternetExplorerDriver.
* Added ability to add custom wire protocol commands in .NET bindings. This
allows projects that use a WebDriver-like JSON-over-HTTP wire protocol to
add additional end points for their use. It does this by exposing (and
renaming) a formerly internal method on the singleton CommandInfoRepository
class. To add additonal commands, one would call the TryAddCommand method,
which is now public. Fixes Google Code issue #8594.
* Added ability to handle W3C spec compliant element serialization.
* (on behalf of Eberhard Beilharz) Made PhantomJS driver more cross-platform
aware. On Linux the filesystem is case-sensitive and executables don't end
with ".exe". This change modifies the PhantomJSDriver to search for
"phantomjs" on Unix systems while keeping the filename "PhantomJS.exe" on
Windows. This allows to use the default constructor of the PhantomJSDriver
class on Linux. Previously using the default c'tor resulted in an error that
"PhantomJS.exe" can't be found.
v2.45.0
=======
* Supports native events for Firefox versions 31 (current ESR), and
24 (immediately previous ESR). Native event support has been discontinued
for versions of Firefox later than 33.
* Removed automatic installation of SafariDriver extention for .NET.
From this point forward, users are expected to manually install the
SafariDriver extension into their Safari installation in order to drive
the browser. This is due to Apple's changes in architecture for Safari
extensions.
* Added initial implementation of .NET bindings OperaDriver. The .NET
bindings will now support the Chromium-based Opera driver without
requiring the use of the Java remote WebDriver server. This driver will
work with Opera 26 and above, and requires the download of the Opera
driver executable. Code cleanup and refactoring will take place under a
separate commit. Note that there is still no support in the .NET bindings
for the Presto-based Opera without using the remote server, nor is there
likely to be.
* Added option to not delete anonymous Firefox profile in .NET. This change
adds an option to the .NET FirefoxProfile class so that the driver will
not delete the anonymous profile created by the driver. Since the driver
cannot and should not use an existing profile in situ because of the
multiple instance automation case, this change means that modifications
applied to the anonymous profile can be retained and used in future
anonymous profiles. The implication is that the user can now make
modifications to a profile, and retain those profile modifications (e.g.,
cookies) into other future profiles, simulating persistent changes over
multiple browser launches. Fixes issue #7374.
* Introduced type safe option in InternetExplorerOptions to set the
capability to disable check of mime type of the doucment when setting
cookies. When setting cookies, there is a check in the IE driver to
validate that the page in the browser is, in fact, an HTML page. Despite
the fact that omitting this check can cause unrecoverable crashes in the
driver, there is demand for a mechanism to disable this check for older,
legacy versions of Internet Explorer. Fixes issue #1227.
v2.44.0
=======
* Supports native events for Firefox versions 33 (current), 32 (immediately
previous release), 31 (current ESR), and 24 (immediately previous ESR).
* Rolled back improper spec compliance for finding elements.
* Fixed WebDriverBackedSelenium compatibility with IE5. Fixes issue #7938.
v2.43.1
=======
* Point-release to correct version resources in .NET bindings assemblies. No
functional changes.
v2.43.0
=======
* Supports native events for Firefox versions 32 (current), 31 (immediately
previous release and current ESR), and 24 (immediately previous ESR).
* Integrated the Microsoft Internet Explorer driver implementation into the
.NET bindings. By setting the Implementation property of the .NET bindings'
InternetExplorerDriverService class, the user can now force the driver to
use the Microsoft implementation. Note that the default is to use the
existing open-source implementation based on the Automation Atoms.
Over time as the Microsoft implementation matures, this will be switched to
use the Microsoft implementation, first by default, then exclusively.
To use the Microsoft implementation, the user must have the August 2014
updates to Internet Explorer installed through Windows Update, and must
install the IE Web Driver Tool for Internet Explorer 11 download from
Microsoft (http://www.microsoft.com/en-us/download/details.aspx?id=44069).
* Added safe check for window.localStorage in .NET WebDriverBackedSelenium
implementation. Patch provided by Timofey Vasenin.
* Implemented pluggable element locator factories for .NET PageFactory. This
change allows the user to specify a custom IElementLocatorFactory for
locating elements when used with the PageFactory. This gives much more
control over the algorithm used to locate elements, and allows the
incorporation of things like retries or handling of specific exceptions.
* Issue #7367: Set Json.NET to ignore dates when parsing response values.
* Issue #7419: Added support for SwitchTo().ParentFrame() in .NET bindings.
This brings the .NET bindings into parity with other languages.
* Belatedly removed long-obsolete .NET tests for AndroidDriver.
v2.42.0
=======
* Supports native events for Firefox versions 29 (current), 28 (immediately
previous), 24 (current ESR), and 17 (immediately previous ESR)
* Updated Json.NET dependency to version 6.0.2.
* Refactored JSON serialization of cookies.
v2.41.0
=======
* Supports native events for Firefox versions 28 (current), 27 (immediately
previous), 24 (current ESR), and 17 (immediately previous ESR)
* Removed deprecated AndroidDriver
* Added excludeSwitches to the list of known Chrome options
* Implemented ITakesScreenshot in RemoteWebDriver base class instead of
in browser-specific subclasses.
* Refactored usage of command executors. We now use the same algorithm for
creating and using a "command executor" for all current driver
implementations. This removes some of the differences between Firefox and
other implementations. It also prepares the way for unifying the
construction of drivers using a common base Options class.
v2.40.0
=======
* Supports native events for Firefox versions 27 (current), 26 (immediately
previous), 24 (current ESR), and 17 (immediately previous ESR)
* Issue #1175: Implemented ByIdOrName in .NET support package.
* Issue #3283: Escaping backslashes when writing Firefox preferences to
profile in .NET
* Issue #3719: No longer redirecting console output for Firefox. This
information was largely unused by anyone, and the implementation had a
chance to produce deadlocks when reading from the console output stream for
stdout and stderr.
* Issue #4248: Added exception handling in .NET WebDriverBackedSelenium.
* Issue #5692: Fixed when cookie expiration date received by .NET exceeds
maximum DateTime value. When receiving a cookie via the JSON wire protocol,
the expiration date is represented as the number of seconds after
12:00:00 AM January 1, 1970 GMT. When a number greater than or equal
253402300800, this is larger than the maximum value of .NET's DateTime
value. This change catches the ArgumentOutOfRangeException and forcibly sets
the expiration to DateTime.MaxValue (12:59:59 PM December 31, 9999 GMT).
* Issue #5755: Exposing property on .NET PhantomJSDriverService to specify IP
address on which to listen for connections. When specifying a port on which
PhantomJS should listen for WebDriver commands, the user has the option to
also specify an IP address to which to bind to listen. This commit exposes
that ability. It also exposes the ability to specify a Selenium Grid hub
with which this instance of PhantomJS should register as a node.
* Issue #6343: (on behalf of Ulrich Buchgraber) Make .NET DefaultWait stop
swallowing original exception stack trace.
* Issue #6699: Exposing process ID of service executable in .NET DriverService
class. This allows the user to attempt to add the process to a Windows job
object if they so desire, which will automatically kill child processes when
the parent process is exited. Note that job objects are subject to security
restrictions when used on Windows Vista or later.
* Issue #6860: Updating .NET SafariDriver browser launch code. The initial
start page from the temp directory that launches the WebSocket is loaded in
Safari via a command line parameter. If the path contains a space, the load
will fail. This is fixed by surrounding the temp file name with quotes.
* Issue #6870: Updated FirefoxDriver constructor for ICapabilities. This
allows the user to pass an ICapabilities object to the Firefox driver
constructor and have specific capabilities used in driver instantiation.
* Issue #6935: Changing .NET random temp file generation to be truly random.
The .NET bindings now use GUIDs as part of the file names for files and
directories created in the temp directory. This is to work around potential
collisions in random number generation encountered when using the .NET
Random class, particularly in different processes. GUIDs are used as their
generation in the .NET Framework is optimized for performance.
* Issue #6966: Changed .NET WebDriverBackedSelenium OpenWindow to mimic Java.
The JavaScript evaluated by the .NET WebDriverBackedSelenium OpenWindow
command handler should return a null value from the eval() of the
JavaScript to open the window. This is what the Java implementation does,
and this commit brings the .NET implementation into line with that.
* Updated .NET PhantomJS driver to be able to execute code in the PhantomJS
context. This allows the user to execute PhantomJS-specific commands using
the PhantomJS JavaScript API.
* Updated .NET bindings to use webdriver.json for default Firefox profile.
Other language bindings have been using a common JSON file containing the
default profile setting for the anonymous Firefox profile used by the
Firefox driver. The .NET bindings now do the same.
* Now provide an option to hide command prompt window for driver service
executables (IEDriverServer.exe, chromedriver.exe, etc.) in .NET bindings.
* Modified to allow user to specify name of driver service executable in .NET.
We now give an overload to CreateDefaultService for ChromeDriverService,
PhantomJSDriverService, and InternetExplorerDriverService to allow the
user to specify the name of the service exectuable. This is particularly
useful for non-Windows platforms where the executable does not end with
'.exe'. It also allows the user to rename the executable to a name of
their choosing and still be able to use it from the .NET bindings.
* Added a type safe option for IE to use ForceUseShellWindowsApi.
* Updated .NET ChromeOptions to include latest options for Chrome. Also fixed
the AddAdditionalCapability method to correctly add additional options to
the chromeOptions object passed to chromedriver.exe, instead of to the top-
level of the capabilities object. Adding new top-level capabilities is
handled by a new overload of AddAdditionalCapability that contains a boolean
argument to indicate that the capability should be added to the root of the
capabilities object. This handles the 80% case where new "experimental"
options are added by the chromedriver team.
* Implemented FindsBySequence attribute for .NET PageFactory. This new
attribute allows the user to mark a field or property in a page object such
that any FindsBy attributes set on the member are used in sequence, as
specified by the Priority property. Note that when not specifying a Priority
value, or specifying multiple FindsBy attributes with the same Priority
value, the behavior is undefined.
* Fixed cleaning up leftover temp directory when using SafariDriver.
v2.39.0
=======
* Supports native events for Firefox versions 26 (current), 25 (immediately
previous), 24 (current ESR), and 17 (immediately previous ESR)
* Deprecated .NET AndroidDriver class. Going forward, the recommended approach
is to use a third-party implementation for Android, such as Selendroid
(http://selendroid.io/) or Appium (http://appium.io/).
* Added experimental IWebDriver extension methods to .NET support classes.
This commit adds extension methods to IWebDriver, which can be used to
reduce the amount of type casting that must be done to access
functionality not provided by the base IWebDriver interface. The following
methods were added:
* TakeScreenshot() - does not require a cast to ITakesScreenshot, and has
support for working directly with instances of RemoteWebDriver.
* ExecuteJavaScript<T>() - does not require a cast to
IJavaScriptExecutor, and will automatically cast the result to the type
specified by the generic type parameter (T).
These extension methods should be considered experimental. To use them
requires a reference to WebDriver.Support.dll, and adding a using clause
for OpenQA.Selenium.Support.Extensions.
v2.38.0
=======
* Supports native events for Firefox versions 25 (current), 24 (immediately
previous and current ESR), and 17 (immediately previous ESR)
* Issue #6383: Adding method GetCSSCount to ISelenium.
* Issue #6418: Updated .NET path manipulation when launching Firefox process.
* Issue #6453: Adding type-safe properties for new command-line arguments of
chromedriver.exe
* Issue #6457: Disabled keep-alive header on .NET driver service startup/
shutdown requests.
v2.37.0
=======
* Supports native events for Firefox versions 24 (current and current ESR),
23 (immediately previous), and 17 (immediately previous ESR)
* Issue #6163: Refactored .NET DriverService-based shutdown code. Moved
waiting for the driver service process to end to immediately after sending
the shutdown HTTP request. Waiting to catch the exception for a failed HTTP
request due to a closed socket is very expensive. This cuts shutdown time
for a driver service executable to about 33% of what it used to be for the
IE driver, with larger savings for Chrome and PhantomJS.
v2.36.0
=======
* Supports native events for Firefox versions 24 (current and current ESR),
23 (immediately previous), and 17 (immediately previous ESR)
* Added ability to set additional ChromeOptions in the .NET bindings. This
allows the ability to set user profile preferences and local state
preferences using the ChromeOptions class. The new AddUserProfilePreference
and AddLocalStatePreference methods correspond to the "prefs" and
"localState" capabilities documented in the chromedriver documentation. Note
that the values passed in to these methods must be JSON-serializable, and no
validation is done on these values at present. We now also allow setting the
"detach" capability, which allows the user to specify that Chrome remain
running after chromedriver.exe has quit.
* Removed support for the obsolete chrome.binary and chrome.switches
capabilities.
* Changed the command line arguments to chromedriver.exe to include two
hyphens, instead of one (e.g., "--silent" instead of "-silent").
* Issue #6163: Fixed quoting of cmd argument contains space for PhantomJS.
* Added ability to set Chrome extensions by using base64 encoded strings.
Previously, you could only install extensions by using a path to a .crx
file. Now you can embed the extension as a base64-encoded string, without
having it persisted to the disk at all.
v2.35.0
=======
* Supports native events for Firefox versions 23 (current), 22 (immediately
previous), 17 (current ESR), and 10 (immediately previous ESR)
* Issue #4506: (on behalf of Aaron Evans) Remove trailing slashes from baseUrl
in .NET to prevent double slashes in URL. This change is in the .NET
WebDriverBackedSelenium API.
* Removed unnecessary ProxyJsonConverter class.
* Updating InternetExplorerOptions documentation for UsePerProcessProxy
property.
v2.34.0
=======
* Supports native events for Firefox versions 22 (current), 21 (immediately
previous), 17 (current ESR), and 10 (immediately previous ESR)
* Added support for ie.ensureCleanSession capability to .NET bindings. The
.NET bindings do this by means of the EnsureCleanSession property on the
InternetExplorerOptions object. When set to true, this property instructs
the IE driver to clear the system cache for all instances of Internet
Explorer, even those already running when the driven instance is launched,
so care should be used when setting this property. The property defaults to
false.
* Added type-safe Proxy property to .NET InternetExplorerOptions class. Also
added support for the ie.usePerProcessProxy capability via the
UsePerProcessProxy propery.
* Issue #5999: Rearranged command line generated for PhantomJS. This
rearranges the order of arguments so that PhantomJS command line arguments
appear before the GhostScript main.js file (if any).
* Added JSON serialization info for .NET Proxy class. Also added Proxy
property to ChromeOptions class for type-safe adding of proxy to Chrome
capabilities.
* Added ability to set external GhostDriver implementation in .NET bindings.
Previously, it was not possible to set the path to the GhostDriver
JavaScript implementation in the .NET bindings; the user was forced to use
the implementation embedded in the PhantomJS executable. This change now
mimics the Java language bindings in functionality.
* Moved .NET IE driver command-line args into capabilities. This is to sync up
the .NET bindings with 2.33.0.7 of IEDriverServer.exe.
* Allow using global capability types for .NET InternetExplorerOptions.
v2.33.0
=======
* Supports native events for Firefox versions 21 (current), 20 (immediately
previous), 17 (current ESR), and 10 (immediately previous ESR)
* Issue #5549: Modified to use indexer for putting entry in .NET Firefox
Profile preferences Dictionary. Was previously using the .Add() method of
the Dictionary, which would throw an exception if the key already existed.
* Updated InternetExplorerDriverService to allow using new command line
options for IEDriverServer.exe
v2.32.1
=======
* Removed strong-naming from released assemblies. No functional changes.
v2.32.0
=======
* Supports native events for Firefox versions 20 (current), 19 (immediately
previous), 17 (current ESR), and 10 (immediately previous ESR)
* Issue #4629: Modified .NET Firefox driver to only look to connect to IPv4
addresses. The ConnectToBrowser() method always created IPv4 addresses to
initially addresses for connection, this would throw an exception.
* Issue #5306: Fixing .NET PageFactory WebElementProxy to call wrapped
element's FindElements method.
* Changed FirefoxBinary timeout property to use TimeSpan. Using TimeSpan
allows more flexibility for the user to set, and does not hard-code
milliseconds as the unit of measure. This commit introduced overloads of the
appropriate exposed properties and methods, marking those taking a long as
obsolete. The obsolete members will be removed in a future version.
* Do not send chrome.binary capability if the property is null. This will
properly allow the bindings to start the default Chrome installation when
using chromedrive2.
* (on behalf of GeoffMcElhanon) Added support to pass arguments to PhantomJS.
The PhantomJSDriverService now has type-safe properties for all of the
command-line switches supported by PhantomJS. These can be passed directly
on the command line, or can be serialized into a JSON file for passing with
the --config command line switch to PhantomJS.
* Removed arbitrary limit on argument types for executing JavaScript.
v2.31.2
=======
* Issue #5221: Entirely removed the dependency on Castle.Core.dll for .NET
support library. Using the Castle DynamicProxy has been nothing but a thorn
in the side of users of WebDriver.Support.dll. This change implements
hard-coded "proxy" objects the .NET PageFactory implementation. Hopefully,
this will resolve the issues the PageFactory for everyone. Nevertheless,
there is every possibility that will entirely break the PageFactory in some
unforseen way for some subset of users, despite the fact that all of the
tests (both unit and browser-based tests) pass. If that is the case, feel
free to file issues, if the issues include code samples that reproduce the
problem.
* Fixed .NET WebDriverBackedSelenium NuGet packaging. Package was lacking
dependencies on other Selenium NuGet packages.
v2.31.1
=======
* Issue #5257: Fixed assemblies merged with ILMerge on .NET 4.0 when built on
a machine with .NET 4.5 installed.
v2.31.0
=======
* Issue #1320: Refactoring .NET Firefox driver's Executable class. The class
will now better handle custom paths to the Firefox executable.
* Issue #5160: Fixed .NET WebDriverBackedSelenium wait functions. Wait
functions in the .NET WebDriverBackedSelenium now will wait until the
timeout.
* Issue #5211: Allow extraction of IEDriverServer components to custom
directory in .NET. The .NET bindings were passing an incorrect command-line
switch to IEDriverServer.exe for the location to extract embedded library
files.
* Introduced new IE attachBrowserTimeout capability to .NET bindings.
* Blocked ability to set FileDetector for browser-specific drivers in .NET.
Most of the server-components (chromedriver.exe, IEDriverServer.exe,
WebDriver Firefox extension) do not understand how to handle the
FileDetector property. They simply approach all file upload as uploading
from the local machine. If you need to upload remotely, use an instance of
the RemoteWebDriver class.
v2.30.0
=======
* Issue #5032: Fixed .NET FileUtilities.FindFile() to expand environment
variables and search for invalid characters in PATH directories.
* Issue #5089: Made connection to Firefox extension locked by socket lock in
.NET.
* Issue #5141: Corrected reversed logic in port assignment for .NET
SafariDriver's WebSocket server.
* Issue #5177: Now using ILMerge for WebDriver.Support.dll. The support
library will no longer require an explicit dependency on Castle.Core in its
NuGet package.
* Updated .NET dependencies. Json.NET to 4.5r11; Castle.Core to 3.2.0.
* Added more diagnostics for failed HTTP requests in .NET bindings. This is an
attempt to help diagnose the root cause of issue #3719. Please note that it
makes no effort whatsoever to "fix" the issue. This is simply hoping to
provide more information for those who have run into that issue, and see if
all occurrances have the same root cause.
* Only adding environment variables for Firefox process if they do not already
exist.
* Properly passing requireWindowFocus capability when set in .NET bindings.
Previously, this capability could be set in InternetExplorerOptions, but
it was not being passed through to the driver session.
* Deprecated Alert property of UnhandledAlertException in favor of AlertText
property.
* Updated .NET bindings to use embedded Safari extension. Separate extension
build and installation no longer required.
* Updated registry search for Firefox executable in the .NET bindings.
v2.29.1
=======
* Rebuilt to get embedded Firefox extension with correct version. The
extension in 2.29.0 had a version of "2.28" instead of "2.29". This has now
been corrected.
v2.29.0
=======
* Implemented use with lists for the FindsByAttribute in the .NET bindings.
Note that fields and properties decorated with the FindsBy attribute must be
either IWebElement or IList<IWebElement>.
* Exposed RequireWindowFocus option for Internet Explorer driver in .NET
bindings. This is still an experimental feature, and should be used with
extreme care.
* Added guard for EnablePersistentHoverCapability in .NET
InternetExplorerOptions.AddAdditionalCapability().
* Added type safe ability via InternetExplorerOptions to enable/disable the
persistent hover capability in the .NET bindings for the IE driver.
v2.28.0
=======
* Introduced the CustomFinderType property to the .NET FindsByAttribute. This
allows use of custom By subclasses in the PageFactory. The custom finder
must be a subclass of By, and it must expose a public constructor that takes
a string argument. To use a custom finder with the FindsByAttribute, use the
following syntax:
[FindsBy(How = How.Custom,
Using = "customCriteria",
CustomFinderType = typeof(MyCustomBySubclass))]
Using How.Custom without specifying a CustomFinderType, or using a
CustomFinderType that either does not descend from By or does not have a
proper constructor will throw an exception.
v2.27.1
=======
* Corrected FileUtilities.FindFile() to correctly return the current directory
if the specified file is located there. This fixes an issue where driver
service executables (IEDriverServer.exe and chromedriver.exe) would not be
found if placed in the same directory as the WebDriver.dll assembly,
breaking previous behavior.
v2.27.0
=======
* Issues #3508 and #2103: Modified to no longer hang on alerts triggered by
onchange of <select> elements or by onsubmit of <form> elements.
* Issue #4865: Changed DesiredCapabilities.Safari() to return
DesiredCapabilities instead of ICapabilities.
* Implemented rudimentary path searching for executable-based drivers (such
as IE, Chrome, and PhantomJS).
* Finally made the .NET PhantomJSDriver public. It still requires a PhantomJS
built from the trunk of that project, at least until PhantomJS 1.8 is
released in late December.
* Implemented touch screen actions for the .NET bindings.
* Added ability to add experimental or additional capabilities for which there
are not yet type safe options to the .NET InternetExplorerOptions and
ChromeOptions classes.
* Removed necessity for path to GhostDriver's main.js for the .NET
PhantomJSDriverService in favor of a command line switch (GhostDriver is now
internal to PhantomJS).
* Turned off use of the Expect-100 header for the HttpWebRequests.
* Added various StyleCop changes.
* Added support for file uploads to a remote WebDriver server.
* Added a missing method to the Actions API.
v2.26.0
=======
* Issue #4526: Bumping .NET HttpWebRequest service point connection limit to
2000.
* Prevent firefox from updating, checking and warning for extension and plugin
updates
* Handled the case where a JSON Wire Protocol error response contains a null
value for the message property. Also guarded against null values in other
members of the error response.
* Added .NET implementation of PhantomJSDriver, as a headless option for .NET
users. This driver requires PhantomJS and GhostDriver. Since the GhostDriver
project isn't ready to be used just yet, these classes are marked with