-
-
Notifications
You must be signed in to change notification settings - Fork 8.2k
/
CHANGELOG
2647 lines (2449 loc) · 138 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
v4.26.1
======
* [bidi] Reveal browsing context module in bidi instance (#14684)
* Fix adding cookies when ReturnedCookie class is used (#14697)
v4.26.0
======
* [bidi] Fix web socket communication for .net framework
* Don't include http headers in internal logs (#14546)
* Don't write trace log message when waiting until driver service is initialized (#14557)
* Support GetLog command by Remote Web Driver (#14549)
* Add more internal logs around CDP DevTools communication (#14558)
* Interactions with Selenium Manager are AOT compatible (#14481)
* Allow setting of PageDimensions and PageMargins in PrintOptions directly (#14593)
* Fix devtools check in `NetworkManager` to determine CDP is supported (#14638)
* Lazy-load Selenium manager binary location (#14639)
* [bidi] Second round of BiDi implementation (#14566)
* Add CDP for Chrome 130 and remove 127
v4.25.0
======
* Add CDP for Chrome 129 and remove 126
* BiDi implementation (#14318)
* Add BiDi OriginalOpener in browsing context info
* [bidi] Forward subscription options in browser context for log module
* [bidi] Enable implicit ways to specify page ranges for printing
* Workaround using pre-processor directive (#14499)
* [bidi] Simplify browsing context type enumeration
* [bidi] Expose BiDi associated reference in browsing context
* [bidi] Rename entry point AsBidirectional to AsBiDirectional
v4.24.0
======
* Migration from `Newtonsoft.Json` to `System.Text.Json` package (#14292)
* Add CDP for Chrome 128 and remove 125
v4.23.0
======
* Log http requests/responses via internal DiagnosticsHttpHandler (#13978)
* Kick off sending of request and log it in parallel
* Return back protected synchronous Execute method in WebDriver
* Fixed calling quit after not successful new session (#14242)
* Add CDP for Chrome 12 and remove 124
v4.22.0
======
* Have url property setter call navigation method instead of the other way around (#13960)
* Add asynchronous methods to Navigation class (#14051)
* Add preference to enable CDP in Firefox by default (#14091)
* Add CDP for Chrome 126 and remove 123
v4.21.0
======
* Add CDP for Chrome 125 and remove 122
* Overwrite internal log file if it already exists (#13900)
* Align binary location property for FirefoxOptions with other options (#13901)
v4.20.0
======
* Add CDP for Chrome 124 and remove 121
* Use correct devtools session id after reinitialization (#13768)
* Making Selenium Manager a thin wrapper (#13833)
* This change has been made to make it easier to maintain and improve, the interface has
changed and if users were invoking it, they might experience issues. Selenium Manager is
still in beta and these type of changes are expected.
* Nightly dotnet builds are now pushed to GitHub packages
v4.19.0
======
* Add CDP for Chrome 123 and remove 120
* Correct `ChromiumDriverService.AllowedIPAddresses` property name (#13626)
* Fixed parsing of the year in ConsoleApiCalledEventArgs cdp event args (Fixes #13654)
* Add dispose on constructor failure to ensure driver closes (#13673)
* Rename assembly prerequisites to AssemblyFixture
* Support setting timeouts in capabilities (#13698)
* Treat unsuccessful http responses as errored commands (#13608)
* Enable internal logging at trace level for unit tests (#13727)
v4.18.1
======
* Add CDP for Chrome 122 and remove 119
v4.18.0
======
* update parameter name to allowedIpAddresses and make whitelistedIpAddresses obsolete
* remove download url parameter from driver service constructor
* mark UseVerboseLogging obsolete for Edge service in favor of EnableVerboseLogging
* explicitly support passing the full path to driver in Service constructor
* Fix protocol cdp version for remote webdriver (#13507)
* Move initialization of error codes to static ctor
* Add DetachedShadowRoot exception for error response handling
* Add InsecureCertificate exception for error response handling
* Fix network response data encoding (#13576)
* Breaking change: `desiredCapabilities` was renamed to `capabilities` in RemoteWebDriver ctor
v4.17.0
======
* Add csharp to Selenium Manager input for tracking (see #13288)
* Consider log handlers as null when not initiated
* Lazy initialization of log handlers when required
* Specify the dll as nuget content explicitly (#13332)
* Extract downloadable zip file in memory (#13277)
* Update references from desiredCapabilities to capabilities
* Don't output to user's console, rather use logging (Fixes #13410)
* Add function to enable halting targets until runtime.runIfWaitingForDebugger is invoked (#13330)
* Properly get selenium manager from bazel output (#13452)
* Remove deprecated DriverService constructors with options parameter
* Remove deprecated methods for toggling legacy protocol
* Remove deprecated class RemoteWebElement
* Improve logging performance when it is disabled (#13464)
* Add CDP for Chrome 121 and remove 118
v4.16.2
======
* Allow output ofinternal log messages to file (#13249)
* Change a list of downloadable files to IReadOnlyList (#13265)
* Change date format for file log
* Improve file logging code smell (#13249)
v4.16.1
======
* Fix nuget target framework (#13253)
v4.16.0
======
* Update rules_dotnet (#13117)
* Fix WSS scheme determination for DevTools connection (#13131)
* Remove System.Drawing.Common as package dependency (#12781)
* Add Runfiles support to bazel
* Added TargetAttached datastructure to DevTools Target (#13175)
* Allow overriding default Actions duration (#13229)
* Add internal logging (#13140)
* Add Chrome 120 and remove 117
v4.15.0
======
* Do not set binary as empty string (#12738)
* Store the mutated element for the user not just the target id (#12948)
* Do not pack Selenium Manager binaries by consumer packages
* Fix driver service path determination when starting it directly
* Improve nuget packages metadata (#12873)
* Add CDP files for v119 and remove v116
* Implement file downloads (#12979)
v4.14.1
======
* Fix add CDP files for v118 and remove v115
v4.14.0
======
* Add CDP files for v118 and remove v115
* Normalize selenium manager path (#12823)
* Remove IdentityModel nuget from bazel workspace (#12834)
* Update `rules_dotnet` to the latest version (#12784)
* Rename strong assembly name (#12861)
* Fix ci dotnet build on github actions (#12863)
* Deprecate saving screenshots with different image formats (#12878)
* Remove tools folder not related to selenium (#12899)
v4.13.1
======
* Fix bug in selenium manager paths to work on mac and linux
* Don't break devtools processing events thread in case of unexpected exception (#12820)
v4.13.0
======
* Add CDP files for v117 and remove v114
* Stabilize cdp network monitoring via increasing default timeout (#12701)
* Configure await false to all awaitable invocations (#12664)
* Update cdp default command timeout in inline docs (#12707)
* Indicate end of output taken from selenium manager (#12744)
* Declare selenium manager binaries as content (#12711)
* Add browsing context methods for reload, screenshot and prompt
* Allow user to start service before creating driver (#12816)
* Remove Microsoft.IdentityModel.Tokens as dependency (#12777)
v4.12.4
======
* No code changes; issue with 4.12.3 release
v4.12.3
======
* Fix saving png screenshot as file (#12654)
* Correcting failures in CDP Network event tests
* Close dev tools session safely (#12660)
* Send data over cdp consecutively (#12666)
* Show output from selenium manager error stream (#12677)
* Return Task instead of wait it in generated CDP method invocations (#12672)
* Invoke console log api called event many times depending on count of args (#12669)
* Allow users to set Selenium Manager path by environment variable (#12752)
v4.12.2
======
* No code changes; issue with 4.12.1 release
v4.12.1
======
* Only target Netstandard 2.0 for release
* Fix bug for disposal of ClientWebSocket
v4.12.0
======
* Add CDP files for v116 and remove v113
* Fix bug with driver location parsing as a file when no trailing slash (#12473)
* Improve performance in DriverFactory (#12497)
* Avoid async void events in CDP Network session (#12486)
* Rename methods in Actions class to follow .NET convention (#12439)
* Fix bug with Selenium Manager executing in new window (#12593)
* Simplify to only target .NET Standard 2.0 (#12608)
* DriverFinder executed in Driver constructor not Service constructor (#12534)
* Refactor WebScocket communication for BiDi (#12614)
* Avoid potential deadlocks for new dev tools sessions (#12592)
* Send data over cdp consecutively (#12591)
v4.11.0
======
* Add CDP files for v115 and remove v112
* Improving .NET API docs
* Implementation of event wrapped shadow root element (#12073)
* Include generation of support project (#12193)
* Make WebDriver.csproj file more friendly with native pack command (#12235)
* Adding ignore process match for IE Mode across bindings (#12279)
* netcoreapp3.1 is deprecated
* Allow setting a different pointer, keyboard, or wheel on input device (#11513)
* Add move to location method to Actions (#11509)
* Add support for Safari Technology Preview (#12342)
* Use Selenium Manager to locate drivers on PATH (#12344)
* Allow running tests with Edge
* Add browser output from selenium manager to options (#12405)
* Fix error when we send non-base64 data for fetch command (#12431)
* Fix continueResponse method in CDP (#12445)
v4.10.0
======
* Add CDP files for v114 and remove v111
* Remove Selenium RC and WebDriverBackedSelenium code (#12024)
* Improve compilation and publishing of Selenium Manager (#12045)
* Fix version reported by HTTP user agent (#12061)
* Support proxies for Selenium Manager (#12100)
* Deprecate UseLegacyProtocol in SafariDriverService
* Add links to documentation in error messages (#12157)
* Add custom error class for driver location and improve error logic (#12157)
v4.9.1
======
* Add CDP files for v113 and remove v110
* Fallback result parsing of script execution to expected type (#11930)
* Using Selenium Manager in default service creation (#11994)
* Encoding process output (#11947)
* Generate API documentation (#11968)
v4.9.0
======
* Add CDP files for v112 and remove v109
* Don't listen to error output stream from selenium manager to avoid messing up output (#11863)
* Selenium Manager get Browser Version from Options classes
* Selenium Manager use binary from Browser Options
* Throw a descriptive exception if the current dev tools version is not supported (#11876)
* Use ChangeType method to convert any object to boolean in WebElement properties (#11913)
* Use selenium manager in tests (#11871)
v4.8.2
======
* Add CDP files for v111 and remove v108
* InvalidSelectorException now extends WebDriverException
* Using json output with Selenium Manager
* Include targets for projects building transitively (#11812)
v4.8.1
======
* Add CDP files for v110 and remove v107
* IJavascriptEngine implements IDisposable where available (#11594)
* Updating Selenium Manager binaries for 4.8.1 release
v4.8.0
======
* Add CDP files for v109 and remove v106
* Add comment with name of large JS executions (#11038)
* Extend invalid selenium manager process exit codes (#11361)
v4.7.0
======
* Adding CDP files for v108 and removing v105
* Update Service classes to only use System.Net.Http.HttpClient (#11143)
* Add .NET 6 support (#11298)
* Add support for Selenium Manager to work with IE Driver
* Improve error handling with Selenium Manager
v4.6.0
======
* Adding CDP files for v107 and removing v104
* Initial implementation of Selenium Manager
* allow select list class to work with disabled select elements again
* Bundle smg into nuget package and copy binaries to users output
* fix bug preventing installing addon from directory
v4.5.1
======
* Fix bug preventing automatic detection of protocol version
v4.5.0
======
* Add CDP support for v105, and remove v102
* Add CDP support for v106, and remove v103
* Update Select class to error when elements are disabled
* Add support for installing unsigned add-ons in Firefox
* Add return value for installing add-ons in Firefox
v4.4.0
======
* Add CDP support for v104, and remove v101
* Removed obsolete TouchActions class
* Removed all methods marked obsolete from 4.0
* Updated Newtonsoft.Json to address security issue
* Implemented ability to run different versions of browser and driver for Chrome
* Implemented VirtualAuth support
* Fixed bug with unsuccessful http requests in session start
* Fixed bug checking whether driver supports DevTools
* Marked UseSpecCompliantProtocol obsolete and throwing error when user sets to false
v4.3.0
======
* Added CDP support for v103, and remove v100
* Removed Element `GetProperty()` method
* Removed execute Chrome command methods
* Removed AddAdditionalCapability() methods from Browser Options classes
* Removed IFindsBy locator interfaces
* Removed HTML5 commands, interfaces and classes since not w3c supported
* Removed support for moving to top left of element due to inconsistencies
v4.2.0
======
* Implement setting pointer event properties
* Add CDP support for v102, and remove v99
* Add performance to LogType
* Removed Opera classes
* Implemented Action Wheel Input and scrolling methods
* Allow RemoteWebDriver to access Selenium logs
* Fix bug where Actions class did not reset sequences after calling perform
* Add Pause action to Actions class
v4.1.1
======
* Add Zenkaku/Hankaku key
* Allow Cookie name to be empty String when value not empty
* Only add websocket-port if connectToRunningBrowser is not set
* Add support for Chromium to cast desktop
* Add CDP support for v99, v100, v101 and remove v94, v95, v96
v4.1.0
======
* add CDP support for v96 and remove v93
* Adding test configuration for Edge in IE Mode
* Refactor registration and execution of custom WebDriver commands
v4.0.1
======
* Refactored WebSocket handling of CDP. The handling of sending and receiving
data via WebSocket for use with Chrome DevTools Protocol (CDP) messages was
previously haphazard, and did not follow proper patterns of behavior with
the .NET core WebSocket library. This commit reworks the WebSocket code to
better fit the .NET processing model. The public API of the DevTools
integration is largely unchanged. with the exception of the addition of the
HasActiveDevToolsSession property to the IDevTools interface, allowing a
user to query whether an active session exists without calling
GetDevToolsSession().
* Refactored how the driver behaves when a window is closed with
driver.Close() that contains the page which is the target to which the
DevTools session is attached. This should make that transition more
seamless and prevent errors on attaching to a new target when the next
DevTools command is issued.
* Refactored Cookie constructors to allow SameSite cookies to not necessarily
have the Secure flag set. This allows Chromium-based browsers that do not
fully comply with SameSite cookies to work.
v4.0.0
======
* Prevented getting bodies of responses for redirects, as this causes an
error in the DevTools protocol.
* (on behalf of Brandon Walderman) Made adding browser-specific options for
Chromium-based browsers more obvious.
* (on behalf of Puja Jagani) Added constructor for creating a Cookie instance
with all optional arguments. Fixes issue #9361.
* Add infratructure for future support of previously unsupported interaction
types.
* Made SlowLoadableComponent more extensible. Fixes issue #9009.
* (on behalf of elgatov) Made SlowLoadableComponent use UnableToLoadMessage
property. Fixes issue #8550.
* (on behalf of Brandon Walderman) Removed Edge Legacy options.
* Added CDP support for Chromium 95.
* Added ability to monitor DOM mutations.
* Restored protected ElementFactory property for use by downstream projects.
v4.0.0rc3
=========
* Explicitly remove Expect header. When using the HttpClient class, the
behavior for an HTTP POST request is different between .NET Framework and
.NET Core. In the .NET Framework case, the client automatically adds an
`Expect: 100-Continue` header. When the remote end does not send a 100
response, the client hangs waiting for it. This change explicitly removes
that header for all HTTP requests. Fixes issue #9277.
v4.0.0rc2
=========
* Fix TouchActions Flick overload
* Fixing doc string for Network Conditions methods
* Adding support for Firefox and Chromium Android options
* Coercing return type of GetCastSinks() to proper datatype
* implement ability to open Safari inspector
* implement getting and setting permissions on Safari
* implement getting the context of Firefox commands
* implement ability for Chrome and Edge to set applicable permissions on browser
* implement ability to launch chromium application
* implement chrome and edge support for casting to devices
* Add --websocket-port command line argument for geckodriver
* Restore ability to add headers to WebDriver HTTP commands
* Move UserAgent class to main namespace
* mark deprecated chromedriver commands as obsolete and implement new preferred command
* Add version-independent method for overriding user agent via CDP
* Add Bidi-compliant webSocketUrl capability
* Make CDP sessions autodetect close of initial attached target
* Update supported version of CDP to 94, remove 92
* Rename TerminateDevToolsSession to ResetDevToolsSession
* Add ability to disconnect a CDP session
* Add transformation for network responses via CDP
v4.0.0rc1
=========
* Set available versions of Chrome DevTools Protocol to 85, 92, and 93.
* Enabled script pinning. This allows the user to add a snippet of JavaScript
to a page that will be available on all subsquent pages, and not have to
pass the script across the wire every time. For exceptionally large blobs
of JavaScript, this may represent a significant savings in bandwidth and
data sent to the remote end of the WebDriver protocol. This feature is
currently only available for browsers that implement the Chrome DevTools
Protocol.
* Added ability to use By object with relative locators. This change also
marks RelativeBy.WithTagName as obsolete. Users should change their calls
to `RelativeBy.WithLocator(By.TagName(...))`.
* Allow network interception to handle duplicate response headers.
Headers in HTTP responses may be repeated. The previous implementation
of CDP network response handling did not take this into account. Now, if
a response has duplicate headers, the values will be combined into a
single header with the correct name, and a comma-separated list for the
value. This is complaint with RFC2616. There is an exception for the
Set-Cookie header, however, which is allowed to occur multiple times,
but is not combinable as to the rules of the aforementioned RFC. To
account for this, a new property on HttpResponseData has been added to
list the cookie headers (the `CookieHeaders` property) as found in the
response.
* (on behalf of Nikolay Borisenko) Modified to dispose HttpRequestMessage
and HttpResponseMessage when making HTTP calls across the wire.
* Updated the InternetExplorerOptions class to match the existing capabilities
of the IE driver.
* Updatde the events in HttpCommandExecutor to allow the user to capture
the commands sent to the remote end of a WebDriver session.
* Fixed the PrintOptions class to handle page ranges. Fixes issue #9755.
v4.0.0b4
========
* 4.0.0b3 was skipped for the .NET bindings and not released publicly.
* Added support for finding elements in shadow DOM. This feature adds
support for the WebDriver protocol commands for finding elements
located in a Shadow DOM. Please note that until a driver implementation
(chromedriver, geckodriver, etc.) supports the end points documented in
the specification, none of these methods will function at all.
* (on behalf of doctor-house) Made HttpRequestData properties settable.
Fixes issue #9456.
* Added proxying of CDP commands via remote/grid.
* Updated Chromium-based browsers to correctly inherit Options.
* Refactored .NET bindings class inheritance hierarchy. This breaks the
assumption that all browser-specific driver (ChromeDriver, FirefoxDriver,
EdgeDriver, etc.) are all subclasses of RemoteWebDriver. This is no longer
the case. The guidance for all users has always been to write your
Selenium code using the IWebDriver interface, rather than the concrete
implementation classes. If you have followed this guidance in your Selenium
code, this change should be largely transparent to you. If you have used
the implementation classes, this might be a breaking change.
* (on behalf of Puja Jagani) Removed CDP version support for 86 and 87.
Added CDP version support for 90 and 91.
* (on behalf of Troy Walsh) Added screenshot support for
EventFiringWebElement. Fixes issue #9258.
* Made DriverService InitializationTimeout property public, and also allow
the property to be settable. Fixes issue #9150.
v4.0.0b2
========
* (on behalf of Artur Nebot) Set EdgeOptions to start Chromium-based Edge
by default. Fixes issue #9262.
* Added support for CDP in Firefox. This currently only works for Firefox
Nightly. To use this feature, set the EnableDevToolsProtocol property of
FirefoxOptions to true.
* Fixed network interception for use with browsers that support CDP.
* Made DriverService.InitializationTimeout a public settable property. Fixes
issue #9150.
v4.0.0b1
========
* Added ability to listen for JavaScript exceptions and callbacks for
browsers implementing the Chromium DevTools Protocol.
* Added the ability of a user to intercept and manipulate network traffic
between the browser and the web site being automated. To use this feature
at present, the browser being automated must support the Chromium DevTools
Protocol, and the driver instance must implement the IDevTools interface.
Attempting to use these features will cause an exception to be thrown at
runtime if the driver is not capable of this communication. To access this
feature, use the following code:
// Assume "driver" is a valid IWebDriver instance
INetwork network = driver.Manage().Network;
// Set up monitoring information by adding handlers
// and subscribing to events.
// Begin monitoring by starting the monitor.
await network.StartMonitoring();
With this new functionality, users can do the following:
* Monitor HTTP requests and responses between browser and web server
* Add handlers to modify requests that meet user-defined criteria
* Add handlers to supply responses for requests that meet user-defined
criteria
* Add handlers to supply authentication credentials for sites using
basic and digest authentication
* Added ISupportsPrint interface to .NET to allow use of Print method.
* Exposed command executor on .NET RemoteWebDriver via IHasCommandExecutor
interface.
* Added support for full-page screenshot command to .NET Firefox driver.
* Added support for environment capability to .NET FirefoxOptions.
* Added spec-compliant properties and methods to .NET IWebElement. The W3C
WebDriver Specification defines additional commands for web elements. This
change introduces properties and methods for execution of those commands in
the .NET language bindings. The added items on IWebElement are:
* ComputedAccessibleLabel property: Allows the user to get the result of
the accessible name and description computation for the accessible
name of the element.
* ComputedAccessibleRole property: Allows the user to get the result of
the computation of the ARIA role for this element. Note that this
property is subject to change its return type, as the specification
needs clarification as to the return type.
* GetDomProperty method: Allows the user to get the value of an
IDL-defined property of the element. These properties are usually
accessed via JavaScript. This method replaces the GetProperty method,
which is now marked as obsolete, as it is being renamed to
GetDomProperty for consistency in the Selenium API.
* GetDomAttribute method: Allows the user to get the value of an
attribute declared in the HTML markup of the element. This differs
from the GetAttribute method, in that it _only_ returns declared
attributes, whereas the GetAttribute method will return one of either
a declared attribute or an IDL property of the element, without
distinction between the two.
* Added support for CDP versions 86, 87, 88, and v89.
* (on behalf of elgatov) Enabled caching IWebElement before checking TagName
is correct. When creating a SelectElement we must first check the
WrappedElement tag is a <select> element and throw a
UnexpectedTagNameException otherwise. Previously the WrappedElement was not
cached so WebDriver API could be called up to three times: first to check
the tag is not null, second to check it's value is select (ignoring case)
and a third time as a parameter of UnexpectedTagNameException if any of the
previous conditions failed. Fixes issue #8904.
* Added Content-Type header to POST requests for .NET bindings
* Added support for .NET 5
* Enabled allowing the user to specify DevTools Protocol verison. his change
introduces an overload to the `CreateDevToolsSession` method that will allow
a user to request a specific version of the protocol to use instead of
automatically detecting the version used by the browser being automated.
While using this overload can in theory help a user avoid code changes with
every browser update when their code relies on the concrete, browser-
specific protocol domains, using this overload is still fraught with peril,
and should be avoided in favor of the version-independent API the Selenium
library provides. This change also cleans up some API details, removing,
among other things, the `Start` method of the DevToolsSession object from
the public-facing API. When the `CreateDevToolsSession` method is called,
there is no need to start the session, as it is already started.
v4.0.0a7
========
* 4.0.0a6 was skipped for the .NET bindings and not released publicly.
* Enabled the ability to push shipping releases to the NuGet repository
from the Bazel command line.
* Introduced a version-independent implementation of CDP for .NET. This
version introduces a facade around Chromium's Developer Tools Protocol,
which will present developers with a stable, version-independent API for
the use cases most relevant to Selenium. It is still possible for users
to have access to the version-specific API by calling the
`GetVersionSpecificDomains<T>` method on the DevTools session object
created when the user calls `IDevTools::CreateDevToolsSession`. Note
that using this method will tie any consuming code to one and only one
version of a Chromium-based browser, and the consuming code may need
source-code changes and recompilation when new versions of the browser
are released. Note that at this time, only local execution of CDP code
is supported. Remote proxying of CDP calls through the Selenium Grid
is planned, but not yet implemented. Also, certain helper methods to
enable common desired scenarios for Selenium users that may be present
in other language bindings still need to be created for .NET.
* Enabled dynamic generation of the .NET API for the DevTools Protocol
during the Bazel build process.
* (on behalf of J.D. Purcell) Fixed SendKeys regressions related to multiple
file uploading. Fixes issue #8635.
* (on behalf of GFHuang) Make FluentWait.Until method cancellable, adding a
CancellationToken argument to allow the user to cancel the wait.
* (on behalf of Ivan Krutov) Modified to correctly close zip archive in file
uploads for .NET.
* (on behalf of Dvoryadkin Pavel) Modified to detect all files when uploading
multiple files via RemoteWebDriver. Fixes issue #8540.
* (on behalf of haqer1) Fixed typo in tests for visibility.
* (on behalf of Brandon Walderman) Fixed browserName typo for Edge WebView2.
Fixes issue #8455.
* Updated custom Firefox profile generation, as the default WebDriver
preferences JSON file for creating a custom Firefox profile was being
referred to by the wrong resource identifier.
* Updated .NET Bazel build process. This version makes changes to the
.csproj files in the project to shell out to other Bazel targets for
building non-.NET dependencies in the project. It also updates those build
steps to be more friendly to non-Windows operating systems. These changes
should also allow the .NET bindings to go from a clean directory in a new
clone to a fully built and configured .NET bindings with properly embedded
resources, providing that the machine is correctly configured to build the
project from the command line with Bazel. This eliminates a barrier to
entry with respect to using a .NET IDE (Visual Studio and Visual Studio
for Mac) to build the bindings without taking some manual steps first
(like building the JavaScript automation atoms and the web server for
running tests against).
* The .NET tests now support being run under both the .NET Framework
and .NET Core. This also now allows the user to run the tests using
Bazel, and can run against any of the supported browsers. By default,
the tests run using .NET Core. On non-Windows OSes, this will use .NET
Core by default, but if one explicitly wants to use the .NET Framework,
it will use Mono to execute the tests (Mono must be installed for this
to work). To run the tests at the command line, use the following command:
bazel test //dotnet/test/common:<browser> --enable_runfiles
where <browser> is one of the following values:
* chrome
* chromedev
* firefox
* firefoxnightly
* ie
* edge
* edgelegacy
* safari
* safaritechpreview
To specify to run the driver using the .NET Framework, append:
--define framework=netfx
to the command line.
To specify where the browser driver (chromedriver, geckodriver,
IEDriverServer, etc.) can be found, append the following to the
command line:
--test_arg=--params=DriverServiceLocation=<path>
where <path> is the path to the executable.
v4.0.0a5
========
* Fixed Bazel build process to create correct assemblies.
* (on behalf of Maciej Pakulski) Updated MakeHttpRequest to use TaskFactory
for async tasks. MakeHttpRequest is an async method which is called in
synchronous way. In order to avoid a deadlock (for example, when run
using XUnit), we create a new task to run the async method. Fixes issue
#7916.
* Removed is operator in preference to as operator.
* (on behalf of Jordan Mace) Added equals override to EventFiringWebElement.
* (on behalf of Jordan Mace) Fixed binding spec compliance for ErrorResponse.
* Added SameSite cookie information to .NET cookie handling.
* (on behalf of Brandon Walderman) Updated to use a capability to switch
engines for EdgeOptions and EdgeDriverService
* Re-added Firefox preferences json file for legacy anonymous profile
creation.
* (on behalf of Rami) Fixed typos in documentation strings and error
message text for EdgeDriverService. Fixes issue #8098.
* (on behalf of Jordan Mace) Updated to perform null check when calling
Start on DriverService. Fixes issue #8074.
* (on behalf of Mandar J Kulkarni) Fixed method documentation for
RemoteWindow.Maximize.
* (on behalf of "trademark18") Fixed comments for Safari referencing.
Chrome.
* (on behalf of Brandon Walderman) Removed vendor-specific names from
ChromiumOptions base class. This makes the base ChromiumOptions class
vendor-neutral, and also allows a custom browser name when using the
EdgeOptions class.
* (on behalf of Scott Sauber) Fix typo in summary documentation comment
of down keys
v4.0.0a4
========
* (on behalf of Jan Trejbal) Fixed WebSocket message handler. This
change fixes how responses are mapped to the request and propagated
back to the caller, as well as correcting the use of Try* methods to
check for return values.
* (on behalf of Jan Trejbal) Fixed incorrectly used named parameters
in string formatting. .NET Core does not support named parameters in
string.Format(...), so this commit fixes that. Additionally, this
fixes a logic error in DriverOptions.
* Added support for relative locators. To use relative locators in
.NET, take advantage of the new RelativeBy class to use with
FindElement and FindElements. This change also marks the IFindsBy*
interfaces (IFindsById, IFindsByName, etc.) as deprecated. The
presence of individual methods for finding elements by each mechanism
is an artifact of an older architecture, and with the standardization
of the locator methods in the W3C WebDriver Specification, they are
now just excess code, and will be deleted.
* (on behalf of Stanley Hon) Updated EdgeOptions constructor to use new
ms:edgeOptions capability name instead of goog:chromeOptions.
* (on behalf of Stanley Hon) Updated EdgeOptions to allow specifying
BrowserName.
* Changed internal name of embedded resources in .NET assemblies.
v4.0.0a3
========
* Fixed retrieval of "Logs". Fixes issue #7390.
* Added Reset method to Actions class.
* Added ToString override to .NET PauseInteraction.
* (on behalf of Nikolay Borisenko) Fixed to Handle TaskCanceled exception
and re-throw it with timeout exception.
* Added ability to install/uninstall Firefox add-ons.
* Modified to throw more informative exception on invalid new session
response.
* (on behalf of [email protected]) Summary for Minimize method
corrected.
* (on behalf of YevgeniyShunevych) Optimized Actions.MoveToElement
method by removing needless operations.
v4.0.0a2
========
* Added Chrome DevTools Protocol (CDP) support to .NET bindings. By
casting a driver instance to IDevTools, users can now create sessions
to use CDP calls for Chromium-based browsers. The DevTools API is
implemented using .NET classes, and can send commands and listen to
events raised by the browser's DevTools implementation. Please note
that CDP domains listed as "experimental" in the protocol definition
are not implemented at present. Additionally, the current API is to
be considered highly experimental, and subject to change between
releases until the alpha/beta period is over. Feedback is requested.
* Updating logging prefs capability in .NET ChromiumOptions class.
Setting the logging prefs option now correctly sends the
`goog:loggingPrefs` capability to the driver.
* Updated to allow .NET to disable W3C mode for Chrome 75+. Since
Chrome/chromedriver 75 and above implement the W3C WebDriver
Specification by default, the bindings now provide a way to
execute using the legacy dialect of the protocol by setting the
UseSpecCompliantProtocol property of ChromeOptions to false.
* Added support for .NET legacy log API for drivers that support them.
The logging APIs (`driver.Manage().Logs`) are not part of the W3C
WebDriver Specification, and users should only use them for drivers
that support the extension end points for the methods. Drivers that
support these methods will be marked with the new ISupportsLogs
interface, and the user can use a cast (using a non-throwing operator
like the `is` or the `as` operator) to check whether the API is
supported before attempting to call the logging methods. If the
driver does not implement the interface, the logging methods will
not throw (for now), but will return empty lists instead of valid
data.
* Removed the now-unused get/set window size/position end points.
* Exposed event for after driver service process has started. This
commit adds an event that fires after a driver service process has
started and is ready to receive commands from the local end. The
DriverServiceStartedEventArgs provides properties for the process ID, a
StreamReader for stdout, and a StreamReader for stderr. Combined with
the DriverServiceStarting event, the .NET bindings now allow the user
to completely silently start a driver service executable, and to
capture all of the diagnostic output written to the console by that
driver service.
* (on behalf of Long Ly) Added support for the new MicrosoftEdge.
Extracting Chrome into a separate Chromium package since the new Edge
is also Chromium-based. Add the ability for EdgeDriver to launch
the new MicrosoftEdge using MSEdgeDriver without breaking any existing
Edge tests.
* (on behalf of Mathieu Langlois) Fixed FileUtilities.GetCurrentDirectory
when used with reflection. Previously, calling this method using
reflection would throw an exception with "The path is not of a legal
form," because an empty string was being passed to
System.IO.Path.GetDirectoryName. Fixes issue #3447.
* (on behalf of John Chen) Added support for ChromeDriver "append log" flag.
ChromeDriver has a command line option to append to existing log file
instead of overwriting it.
* Updated Json.NET dependency to 12.0.2.
* The .NET bindings build process has now fully transitioned to using the
Bazel build system.
v4.0.0a1
========
* Updated supported .NET Framework versions. This version removes support for
.NET Framework 3.5 and .NET Framework 4.0. Going forward, the minimum
supported framework for the .NET language bindings is .NET 4.5. We will
produce binaries for .NET Framework 4.5, 4.6, 4.7, and .NET Standard 2.0.
While it would be theoretically possible to allow the .NET Standard binary
to suffice for 4.6.1 or above, in practice, doing so adds many additional
assemblies copied to the output directory to ensure compatibility, which is
a suboptimal outcome. .NET Framework 4.7.1 is the first version that
supports .NET Standard 2.0 without the need for these additional assemblies.
* Updated bindings to be based on System.Net.Http.HttpClient. With the advent
of .NET Core 2.0, the preferred mechanism for issuing HTTP requests is with
the use of System.Net.Http.HttpClient. The .NET bindings could not use that
class before because it was not supported on earlier versions of the .NET
Framework. Now that support for those earlier versions has been removed, the
bindings can take advantage of the more efficient communication mechanism.
* Removed legacy OSS protocol dialect from the language bindings. This version
removes support for the legacy OSS dialect of the wire protocol, supporting
only the W3C Specification compliant dialect, including in the Actions and
TouchActions classes. Users who require use of the OSS dialect of the
protocol should use RemoteWebDriver in conjunction with the Java remote
Selenium server.
* Refactored DriverOptions class and subclasses. This commit deprecates
the AddAdditionalCapability method in the driver-specific Options classes
in favor of two methods. The first, AddAdditionalOption, adds a capability
to the top-level, global section of a browser's desired capabilities
section. The second method adds a capability to a browser's specific set of
options. Accordingly, these methods are different for each browser's Options
class (AddAdditionalChromeOption for ChromeOptions,
AddAdditionalFirefoxOption for FirefoxOptions,
AddAdditionalInternetExplorerOption for InternetExplorerOptions, etc.).
Also, this version completes the removal of the DesiredCapabilities class by
removing its visibility from the public API. All use cases that previously
required adding arbitrary capabilities to a DesiredCapabilities instance
should now be manageable by the browser-specific options classes. Moreover,
the ToCapabilities method of the options classes now returns a read-only
ICapabilities object. Users who find these structures insufficient are
encouraged to join the project IRC or Slack channels to discuss where the
deficiencies lie. Likewise, downstream projects (like Appium) and cloud
providers (like SauceLabs, BrowserStack, etc.) that depend on the .NET
language bindings for functionality should be aware of this change, and
should take immediate steps to update their user-facing code and
documentation to match.
* Removed IHasInputDevices and IHasTouchScreen and implementations. The Mouse,
Keyboard, and TouchScreen implementations in the .NET bindings were never
intended to be used by user code. Instead, users are expected to use the
Actions and TouchActions classes or the ActionBuilder class to create
complex interactions with pages being automated. This change reinforces that
behavior, making it explicit.
* Removed legacy Firefox driver from bindings. In keeping with the Selenium
support policy for versions of Firefox (current version, immediately
previous version, current extended support release, and immediately previous
extended support release), none of the current supported versions are able
to use the legacy, browser extension-based driver. All supported versions of
Firefox now use geckodriver. To that end, this commit removes the support
for use of the legacy driver from the .NET bindings.
* Removed deprecated IsTechnologyPreview property from SafariDriver.
* Removed deprecated ExpectedConditions and PageFactory classes, as well as
the supporting classes thereof.
* Updated Json.NET dependency to 12.0.1
* Enabled setting of SOCKS proxy version for proxies.
* Added support for opening new browser windows. Since support has been added
to the W3C WebDriver Specification for creating a new top-level browser
context (a "new tab" or "new window"), this change implements the new
command in the .NET language bindings. The method creates a new browser
tab/window and switches to it. As an argument, the method takes a type hint
to indicate what type of browser context the user wants (a tab or a window).
Example usage:
driver.SwitchTo().NewWindow(WindowType.Tab);
Note carefully, however, this type hint is only a suggestion. If a browser
driver does not support creating new top-level browsers of the type desired
by the user, it will still create the new top-level browser using whatever
type it does support. This is perfectly compliant with the specification
language for this command. As a concrete example, at the time of this
commit, executing the above sample code against the IE driver will create
a new top-level browser context, but as a window, not a tab, in spite of the
fact that a new tab was explicitly requested. Even though the browser itself
supports creation of new tabs, the driver does not. This will not be
considered a valid bug, and issue reports claiming it is so will be
summarily closed, possibly without comment.
* Added Firefox-specific set context method. Geckodriver/Marionette allow the
user to switch the execution context from the page being automated
("content" context) to the window surrounding and hosting the page ("chrome"
context). This commit adds a SetContext method to FirefoxDriver to let users
switch to the desired context. The method takes an enum value to prevent
switching to invalid contexts. Note carefully that when switching out of
"content" context, not all WebDriver commands will continue to be valid. The
Selenium project does not check for the proper context before issuing
commands to geckodriver, and the user is expected to know what context the
execution is happening in once the new SetContext method is called.
* Added additional properties for geckodriver command line. There are command
line options in more recent geckodriver versions that the
FirefoxDriverService didn't understand. This commit adds additional
properties to the service class to enable those command line options.
* Added event documentation comments.
* Added wrapping quotes around file arguments for .NET driver services. There
are several properties of driver services that refer to files or file paths.
These arguments should be wrapped in double-quotes so as to support file
names containing spaces. Fixes issue #6912.
* Added the DriverProcessStarting event to the .NET DriverService object.
This event gives users the ability to modify the ProcessStartInfo instance
used to start the executable for the given DriverService. Possible use
cases include being able to redirect the streams for stdin, stdout and
stderr, or running the driver service executable as a different user
context than the user currently logged into the machine.
* Added constructor overload to DriverServiceCommandExecutor. This new
constructor overload allows the user to supply their own HttpCommandExecutor
(or a subclass) for local execution where the driver service executable
exists locally, and the user wants the driver instance to own the process
life cycle of the executable.
* Implemented strictFileInteractability capability.
* Allowed HttpCommandExecutor subclasses to set CommandInfoRepository. This
allows subclasses of HttpCommandExecutor to properly update the
CommandInfoRepository upon creating a new session. Please note that making
the property setter protected should not be assumed as part of the permanent
API contract. It may be removed at any time, without warning, and without
following the standard project deprecation pattern.
* Disabled log methods in the case of a spec-compliant driver. When calling
driver.Manage().Logs.AvailableLogTypes for a driver that implements the W3C
WebDriver Specification (where there is no corresponding end point), the
bindings would throw a NullReferenceException, because the command does not
exist in the command repository for spec-compliant remote ends. With this
commit, the .NET bindings will not even attempt the remote call for spec-
compliant sessions, returning empty lists instead. Fixes issue #5842.
* Changed HttpCommandExecutor to throw more expressive exceptions.
* Made Until<T> method of DefaultWait<T> virtual, and therefore overrideable.
* Added IWrapsDriver to EventFiringWebElement
* Created additional exception types, introducing JavaScriptException,
MoveTargetOutOfBoundsException, and WebDriverArgumentException. These all
descend from WebDriverException, but having these distinct exception types
allows users to better distinguish between differing error conditions.
* Moved IWrapsDriver and IWrapsElement from the OpenQA.Selenium.Internal
namespace to the OpenQA.Selenium namespace. This should be a no-op for
the vast majority of users, requiring only a recompile of code, given
that both of these interfaces feature return types in the base namespace,
meaning that users likely already have "using" statements for the root
namespace in their source. If errors are encountered, changing the
namespace in the code and rebuilding should resolve the error.
* Removed custom zip archive code. Instead of using the custom ZipStorer
class, we can now use the built-in .NET zip archive handling classes. This
is possible because we no longer support .NET versions less than 4.5.
v3.141.0
========
* Bump version to a better approximation of pi.
* Refined W3C-compliant ActionBuilder API for .NET.
* Updated .NET RemoteSessionSettings to properly return capabilities by index.
* Fixed RemoteWebElement.Equals to use remote call only if not W3C compliant.
* Added WebDriverException for mouse move out of bounds error.
* Modified the .NET test suite to properly ignore and unignore passing
. and failing tests.
* Adding method for executing Chrome DevTools command with result.
* Added ability to use chromedriver in spec-compliant mode.
v3.14.0
=======
* Refactored .NET capability handling. This version introduces a large and
intrusive refactor of the .NET bindings' capability handling. It introduces
a new class, `RemoteSessionSettings`, for use with creating remote sessions
via `RemoteWebDriver`. Additionally, the `DesiredCapabilities` class is now
marked as deprecated and will generate a compile warning on its use.
Almost without exeception, users should not be using DesiredCapabilities in
.NET. The browser-specific options classes provide functionality for adding
any additional capabilities that would need to be sent to a remote end. One
possible exception is when using RemoteWebDriver to connect to a remote
server implementation, where the ToCapabilites method has been called,
but the user wants to add additional capabilities, even though they could
and should have been added before calling the method. In a future release,
calling ToCapabilities will result in a read-only capabilities object, but
recognizing that many users already have existing code that does this,
moving immediately to make the returned object read-only is premature. For
the moment, then, the SetCapabilty method is now marked as deprecated on
DesiredCapabilities. In the next version of the .NET bindings, the return
from ToCapabilities will be changed to return a read-only object.
The RemoteSessionSettings class is designed for use cases where the user
wants to create a remote session using RemoteWebDriver where all of the
nodes in the session creation support the W3C WebDriver Specification
dialect of the wire protocol. This class is designed to be used in
conjunction with the browser-specific driver options classes for matching
capabilities on the remote end.
For single-browser cases, it is still possible (though unnecessary) to
use a browser-specific driver options class (`ChromeOptions`,
`FirefoxOptions`, etc.) by calling the `ToCapabilities()` method, but as
previously mentioned, in the future, the capabilities returned will be
read-only, and will not be able to be added to. Users who feel the need
to modify the options class after converting to capabilities are encouraged
to add the additional capabilites to the options class before the conversion
by appropriate use of the `AddAdditionalCapability` method.
* Exposed additional extension points to better control HTTP communications
between the language bindings and the remote end implemention. For the
.NET implementation of HttpCommandExecutor, we now expose a Proxy property
for proxying requests between the .NET code and the remote end WebDriver