forked from SeleniumHQ/selenium
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
1139 lines (980 loc) · 46.7 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
Version number notation guide:
The version number of the IEDriverServer.exe is in the pattern as follows:
major.minor.build.revision
The "major" and "minor" fields are synchronized to releases of the Selenium
project. Changes in the "build" field indicate interim releases made publicly
available via the project downloads page. Changes in "revision" field indicate
private releases checked into the prebuilts directory of the source tree, but
not made generally available on the downloads page.
v2.45.0.5
=========
* Changed to allow interaction with elements where opacity = 0. The
isDisplayed will still return false for those elements, as is consistent
with drivers for Firefox and Chrome. Fixes issue #503.
v2.45.0.4
=========
* Added busy check after attaching to newly launched IE instance.
* Corrected logic in 'eager' page loading strategy for IE.
v2.45.0.3
=========
* Updates to JavaScript automation atoms.
* Corrected wrong value for pageLoadStrategy capability.
* Reset browser window handle on failure to attach via Active Accessibility.
When launching a new instance, if the driver attempts to use Active
Accessibility to attach to the instance, and the attach fails, the driver
should attempt to attach using the ShellWindows API. However, this fallback
is skipped if the window has already been found. Resetting the found window
handle to NULL allows the driver to proceed with the second attempt.
v2.45.0.2
=========
* Updates to JavaScript automation atoms.
* Added pageLoadStrategy to IE driver. Setting a capability named
pageLoadStrategy when creating a session with the IE driver will now change
the wait behavior when navigating to a new page. The valid values are:
"normal" - Waits for document.readyState to be 'complete'. This is the
default, and is the same behavior as all previous versions of
the IE driver.
"eager" - Will abort the wait when document.readyState is
'interactive' instead of waiting for 'complete'.
"none" - Will abort the wait immediately, without waiting for any of
the page to load.
Setting the capability to an invalid value will result in use of the
"normal" page load strategy.
* Added delay and logging on attaching to launched IE. There are times when
the two methods used for attaching to a launched instance of Internet
Explorer will fail. This commit adds additional logging to help make
diagnosing the exact failure points of these circumstances easier.
v2.45.0.1
=========
* Updates to JavaScript automation atoms.
* Changed to prevent crash when driver fails to connect to IWebBrowser2
object.
v2.45.0.0
=========
* Release to synchronize with release of Selenium project.
* Updates to JavaScript automation atoms.
v2.44.0.4
=========
* Fixed passing per-process proxy settings to new windows. Fixes issue #8112.
v2.44.0.3
=========
* Fixed finding elements by XPath for IE 9 where document mode is less than
IE9.
v2.44.0.2
=========
* Updates to JavaScript automation atoms.
* Added additional logging to cache clearing code
* Updated session intialization to more robustly handle malformed JSON.
Previously, in the IE driver, malformed JSON requests when requesting a
new session would cause the driver to crash. The new behavior is that
if the JSON payload for the new session is malformed by not including
a desiredCapabilities object will now throw an exception. If the user
passes a capability value with the wrong data type, it will be logged
by the driver at a warning level, and the default value for the specified
capability will be used.
v2.44.0.1
=========
* Updates to JavaScript automation atoms.
* Introduced capability to disable check of document type 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. This commit introduces a new capability,
"ie.validateCookieDocumentType" which, when set to false, skips this check
when adding a cookie. The default for this capability when unspecified for
a session is true; users setting this capability to false are considered to
be on their own when encountering issues setting cookies, including, but not
limited to, crashes in the driver executable. Fixes issue #1227.
v2.44.0.0
=========
* Release to synchronize with release of Selenium project.
* Updates to JavaScript automation atoms.
v2.43.0.2
=========
* Implemented retrival of alert text for onBeforeUnload dialogs. Fixes issue
#7901.
v2.43.0.1
=========
* Improved cross-platform compatibility of webdriver-server C++ code. This
commit makes the common webdriver-server C++ code more easily cross-
platform. It does this mainly by removing use of std::tr1::regex, which has
issues compiling under gcc. In its place, we now use a custom URL matching
algorithm for matching URLs in the WebDriver JSON Wire Protocol. While this
matching algorithm may be a potential source of future errors, a nice side
effect of it is a 3% performance increase in server execution times over
using regular expressions. Additionally, this commit includes an alias for
snprintf, which throws buffer overrun warnings when used with Visual Studio.
It also contains some header #include rearranging and linting of the C++
code.
* Implemented driver implementation autodetect in IE driver server. When
specified by the correct command line switch, the driver will use the
Microsoft driver implementation, if the detected version of IE is 11 or
higher, and if the implementation is installed. Otherwise, it will fall
back to the legacy (open-source) implementation.
* Updated third-party C++ library dependencies. This resolves compiler
warnings when compiling Civetweb and JsonCpp under Visual Studio.
v2.43.0.0
=========
* Release to synchronize with release of Selenium project.
* Updates to JavaScript automation atoms.
* Integrated the Microsoft Internet Explorer driver implementation.
This commit optionally allows the user to use the Microsoft-supplied
implementation of WebDriver for IE 11 and above. 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).
Once those prerequisites are installed, the user can use the
InternetExplorerDriverService object in the language bindings to set the
implementation to be used.
By default, the driver will continue to use the driver implementation
developed by the open-source project. Over time as the Microsoft
implementation matures, this will be switched to use that implementation,
first by default, then exclusively.
* Fixed IEDriver crash in WaitUntilElementFocused() because of null pointer.
Added required null check after document->get_activeElement() call
(see MSDN documentation for more information). Fixes issue #7577. Patch
provided by Dominik Rauch.
v2.42.0.2
=========
* Updated json-cpp lib and replaced mongoose web server with civetweb. The
Mongoose project has changed its licensing to GPL. This change replaces
Mongoose with Civetweb, a fork of the Mongoose project at the last commit
under the previous license. Civetweb is licensed using the MIT license.
Additionally, the JsonCpp project has moved and changed owners. It now has
a much simpler method of source code incorporation into additional projects.
See the README.txt in third_party/json-cpp for information about how to
generate the code included here.
v2.42.0.1
=========
* Implemented switchToParentFrame command.
v2.42.0.0
=========
* Release to synchronize with release of Selenium project.
* Updates to JavaScript automation atoms.
v2.41.0.2
=========
* Fixed IE driver to allow JavaScript objects with property names with spaces.
Fixes issue #7305.
v2.41.0.1
=========
* Updates to JavaScript automation atoms.
* Fixed crash when clicking on link that opens a new window.
When IWebBrowser2::Quit() is called, the wrapper process doesn't exit
right away. When that happens, CoCreateInstance can fail while the abandoned
iexplore.exe instance is still valid. The "right" way to do this would be to
call ::EnumProcesses before calling CoCreateInstance, finding all of the
iexplore.exe processes, waiting for one to exit, and then proceed. However,
there is no way to tell if a process ID belongs to an Internet Explorer
instance, particularly when a 32-bit process tries to enumerate 64-bit
processes on 64-bit Windows. So, we take the brute force way out, just
retrying the call to CoCreateInstance until it succeeds (the old
iexplore.exe process has exited), or we get a different error code. We also
set a 45-second timeout, with 45 seconds being chosen because it's below the
default 60 second HTTP request timeout of most language bindings. Fixes
issue #5848. Fixes issue #7021.
v2.41.0.0
=========
* Release to synchronize with release of Selenium project.
v2.40.0.0
=========
* Updates to JavaScript automation atoms.
* Release to synchronize with release of Selenium project.
v2.39.0.7
=========
* Improved error message for findElements in the failure case.
* Added additional logging for failure of get_mimeType when setting cookies.
* Fixed edge case for finding elements by class name with invalid characters.
The fix should be isolated only to situations where the IE document mode
is 8 or less. In other words, it should fix the case for quirks mode for
IE9 or below, and for standards mode for IE8 or below.
v2.39.0.6
=========
* Reorganized wait algorithm in HtmlDialog. Now is more correctly aborting
the wait if a new (cascading) dialog is detected. Fixes issue #6744.
v2.39.0.5
=========
* Modified to use bot.dom.getOverflowState atom for element overflow. This
is a more reliable and fully tested method than previously used. There is
still a minor issue when the element point in question is exactly on the
overflow border, but this needs to be addressed in the atoms code, rather
than at the IE driver level. Fixes issue #6898.
v2.39.0.4
=========
* Update call of isDisplayed atom in IE to not ignore opacity. Previously,
the driver explicitly ignored opacity for IE, but now takes it into account.
Fixes issue #6827.
v2.39.0.3
=========
* Updates to JavaScript automation atoms.
* Attempted fix for finding multiple elements with invalid CSS selectors.
v2.39.0.2
=========
* Updates to JavaScript automation atoms.
* On behalf of Mark Watson: Added ability to attach to IE using the
ShellWindows API instead of the ActiveAccessibility API. This is useful
when the Windows global atoms table is exhausted. Fixes issue #5342.
v2.39.0.1
=========
* Improved error message for failed launch of IE using IELaunchURL API.
We now translate the HRESULT received from the API into a text error
message.
v2.39.0.0
=========
* Release to synchronize with release of Selenium project.
v2.38.0.0
=========
* Updates to JavaScript automation atoms.
* Release to synchronize with release of Selenium project.
v2.37.0.4
=========
* Updates to JavaScript automation atoms.
* Fixed crash encountered when taking screenshot of non-HTML page. This does
not throw an error, but fails silently, with no screenshot being generated.
Fixes issue #6576.
v2.37.0.3
=========
* Refactored detection of single-text-node child elements in IE. In IE, a
containing text and no background color will not register as a hit target
unless the mouse cursor is directly over the text of the element. However,
in the case of block elements with children that include text nodes in
addition to other elements, if the first text node does not contain any
text, the correct behavior is to use the center of the block element for
mouse movements. This commit corrects that behavior.
v2.37.0.2
=========
* Refactored notification of new showModalDialog windows. Previously, the
code notifying the command executor of new HTML dialog windows (opened by
the showModalDialog function) would not always fire in the case where a
second modal was opened from a first. We now notify of the existence of
the new modal whenever a modal is found. This has the potential to cause
mild performance degredation in the modal dialog case, but this is a small
price to pay for the correctness of the driver. Fixes issue #6416.
v2.37.0.1
=========
* Updates to JavaScript automation atoms.
* Modified detection of HTML page. The method for retrieving the expected
type description for HTML pages was far more complex than it needed to be.
We now use the AssocQueryString API instead of trying to read the registry.
v2.37.0.0
=========
* Release to synchronize with release of Selenium project.
v2.36.0.0
=========
* Release to synchronize with release of Selenium project.
v2.35.3.5
=========
* Fixed bug in getting element location.
v2.35.3.4
=========
* Updates to JavaScript automation atoms.
* Added padding for IE < 8 for getting invisible element location. Invisible
elements on IE 6 and 7 have a 2-pixel border that must be added.
v2.35.3.3
=========
* Fixed HTML dialog logic for self-closing documents. HTML dialog windows
opened using showModalDialog() have no way to properly notify of their
closing. The IE driver attempts to detect closing of these windows by
listening for user-initiated actions, either by calling the WebDriver close
method, or clicking on an element that causes the dialog to close. This
commit adds logic to the method used for getting all window handles to
validate the existence of any HTML dialog windows, properly notifying the
driver if the OS-level window handle is no longer valid. Fixes issue #6249.
* Fixed HTML dialog logic for redirected documents. Getting the parent window
of an HTML dialog's document can fail, especially if the document changed
out from under us before we could get the window reference. The canonical
case for this is a redirect using JavaScript. Now we will sleep for a short
time, then retry to obtain the reference to the window object. Fixes issue
#6224.
v2.35.3.2
=========
* Updates to JavaScript automation atoms.
* Adding more accurate logging during waiting for browser navigation to
complete.
v2.35.3.1
=========
* Updates to JavaScript automation atoms.
* Fixed problem getting SVG elements in IE9 and above.
v2.35.3.0
=========
* Version number change only for public release to downloads page.
v2.35.2.1
=========
* Take document mode into account when getting size of view port for element
clicks.
v2.35.2.0
=========
* Updates to JavaScript automation atoms.
* Refactored calculations to the size of the visible view port. There are
circumstances where IE can have no vertical scroll bar. In these cases, the
IE driver would assume there was a vertical scroll bar, which would make the
actual width of the document larger than the computed width of the window.
This, in turn, would make the driver assume there was a horizontal scroll
bar, which would imply that absolutely-positioned elements at the bottom of
the page would not be seen as clickable.
* Modified to ignore frames which can not be retrieved by
IHTMLFramesCollection2::item while waiting for page load complete. This
change prevents infinite page load on IE9 for pages with frameset that do
not specify column or row counts. Fixes issue #3211.
v2.35.1.0
=========
* Updated to correct active element finding when using synthetic events. Fixes
issue #6088.
v2.35.0.0
=========
* Release to synchronize with release of Selenium project.
* Updates to JavaScript automation atoms.
* Preventing crash in IE driver using synthetic events. In some cases
document.activeElement returns an empty object rather than null. This could
cause the IE driver to crash. This change fixes the crash, but not the
underlying JavaScript atoms issue. This is handled by another commit. Fixes
issue #6067.
* Added PAC and proxy autodetect (WPAD) support to IEDriverServer.exe.
v2.34.0.0
=========
* Release to synchronize with release of Selenium project.
* Updates to JavaScript automation atoms.
v2.33.0.10
==========
* Fixed memory allocation in ProxyManager class to work correctly under
Release builds.
v2.33.0.9
=========
* Added error checking in DocumentHost::GetPageSource. Fixes issue #5967.
* Removed StringUtilities methods to create strings from longs. The C++
standard type libary already provides std::to_string() and std::to_wstring()
for this purpose.
* Introduced ability to clean browser cache before launching IE. This version
introduces the ie.ensureCleanSession capability, which will clear the
browser cache, history, and cookies before launching IE. When using this
capability, be aware that this clears the cache for all running instances of
Internet Explorer. Using this capability while attempting to run multiple
instances of the IE driver may cause unexpected behavior. Note this also
will cause a performance drop when launching the browser, as the driver will
wait for the cache clearing process to complete before actually launching
IE.
* Refactored Proxy setting handling in IE driver. We no longer need to replace
the window procedure to accomplish setting the proxy on a per-process basis,
simplifying the process considerably. This version also modifies the
ProxyManager class to let it build the proxy setting string instead of
prebuilding it in the new session command handler. Finally, this version
allows the proxy settings to be passed back to the language bindings via the
return from the getSessionCapabilities command handler.
v2.33.0.8
=========
* Added Proxy support to the IE driver native code. This commit adds proxy
support to the native code of the IE driver, having it recognize the proxy
capability in the WebDriver JSON wire protocol. The default behavior will
change the system proxy when a new instance of the IE driver is created.
This means that from that point forward, all IE instances, including those
*not* started by WebDriver, will use the same proxy information. The driver
will attempt to reset the system proxy to the previous settings when the
session is properly exited by use of the quit method. Be aware that this
means that crashes in the driver may leave the system's proxy settings in an
inconsistent state, and it further implies that attempting to drive multiple
instances of IE using proxy settings will likely do the same.
The driver sets the proxy settings by means of the Windows WinINet API,
which explicitly cannot be used from within a Windows service. This implies
that IEDriverServer.exe cannot be used from within a Windows service.
This commit also introduces a new capability, "ie.usePerProcessProxy". This
capability takes a boolean value, and defaults to false. When set to true,
it attempts to only set the proxy information for a single IE process, and
does not affect the proxy settings of other instances of IE. Use of this
capability should be considered extremely experimental at present,and may
cause IE to behave inconsistently when attempting to use a proxy with this
capability set.
v2.33.0.7
=========
* Refactored IE driver to take advantage of new StringUtilities methods.
* Refactored BrowserFactory class to use member variables. Previously, most
functionality was passed into the methods of the BrowserFactory, breaking
the principle of encapsulation. This change also moves the ability to force
the use of the Windows CreateProcess API and to pass command-line parameters
to the CreateProcess API to capabilities of the IE driver, rather than
arguments passed via the command line of IEDriverServer.exe.
v2.33.0.6
=========
* Refactored IE driver registry access methods to RegistryUtilities class.
This eliminates the need for an unnecessary extra instance of the
BrowserFactory class.
* Implemented logging for IE driver HtmlDialog class.
* Cleaned up IEDriver logging on asynchronous script execution.
v2.33.0.5
=========
* Corrected logic for invisible element coordinate calculation on IE6 and 7.
v2.33.0.4
=========
* Reverting logic change for invisible element coordinate calculation on IE6
and 7.
v2.33.0.3
=========
* Corrected logic for invisible element coordinate calculation on IE6 and 7.
* Fixed logic error in Script::ExecuteAsync() waiting for exclusive access to
event.
* Added IE-specific atoms to eliminate round-trips through IE's JS engine. The
findElement and findElements atoms take a JavaScript object as their first
parameter. Until now, that facilitated a round-trip through the IE
JavaScript engine to be able to create the JavaScript object to pass into
the atom function. We are now creating IE-specific JavaScript functions that
wrap those two atoms, and take simple strings as arguments, which lets the
IE driver call the atom directly without having to call a separate script
that simply creates the JavaScript criteria object.
* Removed extra round-trips through JavaScript engine when executing
JavaScript. This should provide a slight performance boost when executing
JavaScript that returns arrays or JavaScript objects.
v2.33.0.2
=========
* Updates to JavaScript automation atoms.
* Corrected logic in getting location of element after scrolling into view.
For IE 6 and 7, an additional 2-pixel offset must be added for every frame
on the page when calculating element location.
v2.33.0.1
=========
* Refactored session shutdown code to properly wait for thread termination.
Fixes issue #5543.
v2.33.0.0
=========
* Release to synchronize with release of Selenium project.
v2.32.3.13
==========
* Modified to better detect focus on incorrect UI elements when
requireWindowFocus is specified.
v2.32.3.12
==========
* Updates to JavaScript automation atoms.
* Prevent double-clicks when using WebElement.click(). When using the
requireWindowFocus capability, it's possible that multiple calls to
WebElement.click() might happen too quickly, and they might be interpreted
as a double-click. This change inspects the last time an element was clicked
on, and if it is within the system double-click time, it waits until that
time passes before performing the second click.
* Made InputManager more robust in the requireWindowFocus case. Previously,
using the Windows SendInput API could cause keystrokes and mouse events to
be added to the system message queue, but would return back to the caller
before those events were processed by Internet Explorer's message loop.
This change adds a Windows mouse hook and keyboard hook to monitor when
the messages are processed by an applications message loop. There is still a
potential race condition, and users may still need to execute some local
synchronization code.
v2.32.3.11
==========
* Refactored IE driver element click code to all use InputManager class.
Previously, WebElement.click() used a different code path than the Advanced
User Interactions API. These code paths are now unified for the native
events case.
v2.32.3.10
==========
* Reinstated separate-thread execution of JavaScript on Windows 8. This
functionality had been disabled in 2.26.1.2, because of crashes in the IE
driver on Windows 8. It seems likely that the COM object lifetime cleanup
that happened in 2.31.0.2 corrected these problems. There is a possibililty,
however, that the root cause of the Windows 8 crashes is still in place. If
that is the case, this change should be rolled back.
v2.32.3.9
=========
* Modified to check the editable state of an element before clearing.
The clear Automation Atom normally checks that an element is interactable
and editable before attempting to clear it. A previous change fixed the case
for checking the interactable state, but not the editable state. The driver
will now check the editable state as well. To facilitate this, a new atom
has been exposed for checking the editable state.
v2.32.3.8
=========
* Modified to check the interactable state of an element before clearing.
The clear Automation Atom normally checks that an element is interactable
before attempting to clear it. Unfortunately, when the atom is run on a
separate thread in legacy IE, the error states do not get propagated back to
the calling thread properly. To avoid this problem, the driver will check
the interactable state before calling the clear atom. To facilitate this, a
new atom has been exposed for checking the interactable state.
v2.32.3.7
=========
* Increased timeout for asynchronous JavaScript execution. This allows more
time for automation atoms to complete their operations before timing out.
* Modified to throw if an element is not enclosed within a form in IE.
v2.32.3.6
=========
* Updates to JavaScript automation atoms.
* Refactoring asynchronous execution of JavaScript in IE driver. This
introduces a new method for executing JavaScript functions asynchronously
via a new thread. This centralizes the code used to execute automation atoms
that may cause an alert to display (like click or submit or clear). Fixes
issue #5556.
v2.32.3.5
=========
* Corrected logic error in implementing loop. The code was intended to use a
loop, but instead used a simple if statement.
v2.32.3.4
=========
* Updates to JavaScript automation atoms.
* Added retry loop for handling alerts on shutdown. Previously the IE session
would only check twice for alerts on shutdown. This handles the case of
repeated alerts, and will check up to six times, for a total of 30 seconds.
v2.32.3.3
=========
* Corrected dismissal of dialogs on browser quit. The IESession object already
had code to check that the IECommandExecutor had fully quit before shutting
down the thread on which the executor was running. However, it had no code
to handle the case where all browser instances for that session were not
properly shut down. Now the session will ask the executor to check one final
time and make one last-ditch effort to dismiss any dialogs and shut down
the browser instances. Please note that the best practice is to handle any
alerts that may appear in web pages being automated before executing
driver.quit(); this should only be used as a last resort.
v2.32.3.2
=========
* Corrected dismissal of onBeforeUnload dialogs. We now notify the button's
immediate parent, instead of sending a message to the button. Sending the
BM_CLICK message to the button can fail if the dialog doesn't have the
system focus.
v2.32.3.1
=========
* Corrected logic error in alert handling. A slight logic error in the alert
handling code was causing the alert handling to not wait for the alert to be
completely dismissed before continuing. This was causing a race condition
that could lead to crashes when quitting the browser if certain types of
alerts were active. Fixes issue #5489.
v2.32.3.0
=========
* Corrected number of script arguments in InputManager::SendKeystrokes. In a
recent refactor, this code was slightly changed, and the declaration of a
Script object was expecting three arguments instead of the required four.
Fixes issue #5502.
v2.32.2.0
=========
* Corrected logic error in reading TabProcGrowth registry value. The
TabProcGrowth registry value can be a DWORD or a string. If it is a string,
it can be a numeric string (e.g., "0"), and still be treated by Internet
Explorer as if it were an actual numeric value. This change to
BrowserFactory::GetRegistryValue() correctly handles both cases, coercing
the value to a string type for comparison.
v2.32.1.0
=========
* Modified IEDriverServer to take new command-line switches to allow click on
users to force the use of the Windows CreateProcess API for launching IE.
For some cases, it may be necessary to launch IE in Private mode for
testing in parallel on a single node. To support this, there must be a way
to force the IE driver to use the Windows CreateProcess() API to launch IE
so that the user can specify command-line switches. To preserve the
ability to locate the correct process for IE versions 8 and higher, a
registry value must be set to a specific value, and the IE driver checks for
the registry value before launching IE. Patch for this fix provided by Alex
Savchuk.The registry settings are:
Key: HKEY_CURRENT_USER\Software\Microsoft\InternetExplorer\Main
Value Name: TabProcGrowth
Value: "0"
* Fixed Element::IsAttachedToDom() when used with SVG for IEDriver.
Patch for this fix provided by Patrick Gansterer.
v2.32.0.1
=========
* Fixed to allow click on visible portion of element if center point cannot be
scrolled into view. This fixes issue #4390 for IE. There is still a fix that
needs to be made for Firefox for the issue to be closed. Patch provided by
Alex Savchuk.
v2.32.0.0
=========
* Release to synchronize with release of Selenium project.
v2.31.0.3
=========
* Updates to JavaScript automation atoms.
* Fixing to no longer allow stale element references to be used in JavaScript
execution. The driver now checks the return value when recursively walking
JavaScript arrays and objects. Fixes issue #4769. Patch provided by Alex
Savchuk.
v2.31.0.2
=========
* Updates to JavaScript automation atoms.
* Refactored IE element finder to make clearer when Sizzle is used.
Previously, it was not as easy to determine from IEDriverServer.exe logs
when Sizzle was being used for finding elements by CSS selector. It is now
explicitly called out and logged. Also, automation atoms are being used when
Sizzle is not necessary.
* Simplified COM object handling code in IE driver. COM objects are now
correctly referenced everywhere via smart pointers, and use of some aliased
types is now replaced by the C++ primitives.
v2.31.0.1
=========
* Added ability to get current URL from IWebBrowser2 if IHTMLDocument2 fails.
Under normal circumstances, the IE driver gets the current URL from the
document loaded in the browser. When IE browses to a non-HTML page, such as
a PDF file with the Adobe Reader plugin installed, getting the document
fails, since there is no "document" in the browser. In that case, fall back
to getting the LocationURL property of the IWebBrowser2 interface. It's
arguable that this is the wrong thing to do, since the driver is useless
without an actual document, but we'll let this work anyway. Fixes issue
#5361.
* Updated logic in IE driver to correctly wait for the document. Fixes issue
#5326.
* Submit should throw NoSuchElementException if the target element is not
within a form. Implemented in atoms, Firefox and HtmlUnit.
* Reinstated execution of JavaScript on separate thread for IE10 on Windows 7.
* Removed use of CComQIPtr from IE driver native code. The use of CComQIPtr is
not needed, as we are substituting a call to the QueryInterface method
instead. This is what CComQIPtr does under the covers anyway.
v2.31.0.0
=========
* Release to synchronize with release of Selenium project.
v2.30.2.3
=========
* Introduced "browserAttachTimeout" capability. This allows the user to set a
capability to control how long the IE driver will attempt to locate an IE
browser window belonging to the iexplore.exe process launched by the driver.
This is to overcome the bug reported by some users that the IELaunchURL
Windows API reports the incorrect process ID for the launched iexplore.exe
process. In this case, there is nothing the IE driver can do about the
problem as the bug is inside IE itself. However, this will allow a user
to exit the offending situation early, and attempt to recover. The
capability expects an integer value, representing the number of milliseconds
the driver will contininue to look for the newly-launched IE window. Setting
the capability to 0 (which is its default value) will cause the IE driver to
wait indefinitely. Fixes issue #4541.
v2.30.2.2
=========
* Fixed issues found via static code analysis.
v2.30.2.1
=========
* Simplified element scroll calculation code by using the new
isInParentOverflow atom.
v2.30.2.0
=========
* Hacked around the case where McAfee SiteAdvisor is installed as a plugin for
IE. Modal dialogs are now checked for existence of the WS_CAPTION style.
Note that if IE ever decides to change how it displays alerts, this may
begin to cause failures in alert detection. Fixes issue #4839.
v2.30.1.0
=========
* Updates to version resources. No functional changes.
v2.30.0.0
=========
* Updates to JavaScript automation atoms.
* Fixed incorrect JSON return values for findElements when an error occurs.
This is a "best-faith" effort at resolving reports of NullPointerExceptions
in Java. If future occurrances of the symptoms are found, please open a new
issue. Fixes issue #3800.
v2.29.1.2
=========
* Fixed auto-release of modifier keys when using element.SendKeys with
requireWindowFocus capability.
v2.29.1.1
=========
* Enabled synthetic events mouse clicks to work even when the click triggers
a JavaScript alert.
v2.29.1.0
=========
* Updated to use correct parameter in message loop for executing asynchronous
JavaScript. Fixes issue #5137.
v2.29.0.4
=========
* Allowed the IE driver to get the text of a prompt() dialog window. Fixes
issue #4594.
v2.29.0.3
=========
* Updates to JavaScript automation atoms.
* Removed checking for element visibility and non-zero size from method used
for scrolling elements into view and getting their location.
* Fixed unexpected occurrences of UnhandledAlertException after closing modal
dialogs created using showModalDialog().
v2.29.0.2
=========
* Updates to JavaScript automation atoms.
* Modified method for checking whether modifier keys should be automatically
released when calling sendKeys, either from an element or from the actions
class.
v2.29.0.1
=========
* Updates to JavaScript automation atoms.
* Modified findElement implementations to fail without waiting for the
implicit wait timeout to expire if finding on a closed window. Fixes issue
#5057.
v2.29.0.0
=========
* Updates to JavaScript automation atoms.
* Dampened excessive noise in IE driver logging.
* Modified to initialize value_ member of Response to Json::Value::null upon
creation.
* Updated IEDriverServer.exe to correctly return the current version in the
JSON response for the /status end point of the JSON wire protocol.
* Added usage info to IEDriverServer.exe when using /? /h or /help.
* Removed dead code from ScreenshotCommandHandler.
v2.28.0.4
=========
* Initialized value_ member of Response to Json::Value::null upon creation.
* Suppressed warnings written to console during browser startup and shutdown.
* Updated to correctly return the current version in the JSON response for the
/status end point of the JSON wire protocol.
* Added usage info to IEDriverServer.exe when using /? /h or /help. Also
removed dead code from ScreenshotCommandHandler.
v2.28.0.3
=========
* Introduced the "requireWindowFocus" capability into the IE driver. When used
in conjunction with the "nativeEvents" capability, the driver will attempt
to bring the current IE window to the foreground before executing a mouse
or keyboard event. Also, when the requireWindowFocus capability is set to
true, advanced user interactions will now use the Windows SendInput() API to
execute the interactions. To enable this behavior, set the value of the
requiresWindowFocus capability to "true" when creating an instance of the IE
driver. The default for this new capability is "false". This functionality
is currently considered extremely experimental; use at your own risk.
v2.28.0.2
=========
* Changed view port calculations to allow for always-present vertical scroll
bar, and to test for horizontal scroll bar and adjust as required by page
content. Fixes issue #3602.
* Changed IE GetLocationOnceScrolledIntoView behavior to take the 2-pixel
border of the <html> element used by IE7 and below (and document modes that
emulate that).
* Extracted map of managed elements in IE driver to ElementRepository class.
First step in a potentially larger refactor.
v2.28.0.1
=========
* Attempted to change coordinate calculations due to frame offsets to handle
the cross-domain frame case. This change rests on the assumption that the
order of frames returned by the JavaScript document.frames collection is
the same as that returned by document.getElementByTagName("frame") or
document.getElementByTagName("iframe"). Fixes issue #4948.
v2.28.0.0
=========
* Changed the shared WebDriver C++ server component to use strings in
serialized commands instead of integers. Testing does not seem to indicate
this will introduce a performance issue, and it makes logs more intelligible
when logging the raw JSON of a received command. As far as anyone can
determine, the only consumer of this component is the IEDriverServer.exe, so
this should be a completely internal change.
v2.27.0.0
=========
* Release to coincide with full Selenium release.
v2.26.3.0
=========
* Updates to JavaScript automation atoms.
* Define document on goog.global for fragments, as the closure library now
depends on it. Fixes issue #4802.
v2.26.2.6
=========
* Fixed SendKeysCommandHandler to check that the focus is in the HTML display
pane, and not some other UI element (like the address bar) before sending
the keystrokes.
v2.26.2.5
=========
* Added new capability "enableElementCacheCleanup". When set to true, the
IE driver will clean the known-element cache of invalid elements after
every page load. This is intended to keep memory usage down and improve
performance. However, it is an intrusive change, so this capability is
provided temporarily to allow disabling this behavior if problems arise.
The default of this new capability is "true", meaning this behavior is
turned on by default.
* Refactored IE driver Element class to contain IsAttachedToDom() method,
and IECommandHandler::GetElement() to use it.
* Modified to avoid logging the tag name of the element if getting the tag
name fails in the IE driver. Fixes issue #4811.
v2.26.2.4
=========
* Corrected fix to issue #4800 to better handle nested frames.
* Refactored native code to return the location of each frame containing an
element.
* Refactored location methods of native IE driver code to take a LocationInfo
struct instead of separate args for x, y, width and height.
v2.26.2.3
=========
* On behalf of AdamWu: Fixed calculation of coordinates for elements in
frames/iframes where the element is scrolled out of view within the frame.
Fixes issue #4800.
v2.26.2.2
=========
* Disabled execution of JavaScript code on a separate thread for IE10. This
reverts the behavior of the driver to that before 2.26.1.0 for IE10 *only*.
* Updates to JavaScript automation atoms.
v2.26.2.1
=========
* Modified to return ENOSUCHDRIVER if a session is not available.
v2.26.2.0
=========
* Fixed synchronization issues. These issues were always present, but never
manifested until the IE driver was used with IE 10.
* Reinstating functionality to run JavaScript on a separate thread on Windows
8.
v2.26.1.2
=========
* Removed functionality to run JavaScript on a separate thread on Windows 8.
v2.26.1.1
=========
* Attempted to resolve crash on Windows 8 introduced by JavaScript execution
on a separate thread. Added checks for proper interface marshaling on the
worker thread.
v2.26.1.0
=========
* Updates to JavaScript automation atoms.
* Modified to no longer hang on alerts triggered by onchange of <select>
elements or by onsubmit of <form> elements. Fixes issue #3508. Fixes
issue #2103.
v2.26.0.9
=========
* Modified scroll behavior in IE driver SendKeysCommandHandler to call
Element::GetLocationOnceScrolledIntoView() instead of calling the DOM
scrollIntoView() function. Fixes issue #4393.
* Modified to not call blur() on focusing element if the active element is
the <body> element. This should no longer cause the IE window to drop to
the bottom of the Z-order. Fixes issue #2353 and related.
v2.26.0.8
=========
* Updates to JavaScript automation atoms.
* Release to coincide with full Selenium release.
v2.26.0.7
=========
* Modified so that closing a window (or quitting a browser) now sets the
focused frame to NULL, as if switchTo().defaultContent() had been called.
This is to prevent crashes of the executable when quitting the driver. Fixes
issue #4178.
v2.26.0.6
=========
* Added use of a mutex when creating a session. This should allow multiple
threads to create and use different instances of IEDriverServer.exe,
enabling multiple instances under most language bindings.
* Added enablePersistentHover capability to allow users to turn off persistent
mouse hover within the IE driver.
v2.26.0.5
=========
* Refactored alert handling to allow handling of OnBeforeUnload dialogs. This
is a slightly incomplete solution, as the dialog is not automatically
handled on window close/browser exit. To work around this limitation,
navigate to a different page (handling the OnBeforeUnload dialog), then
call the quit() method.
v2.26.0.4
=========
* Updates to JavaScript automation atoms.
v2.26.0.3
=========
* Allowed buttons on alerts with control IDs of IDRETRY to be handled as
"OK" buttons, which should allow them to be handled by Alert.accept().
v2.26.0.2
=========
* Modified find-by-XPath code to correctly escape embedded quotes before
invoking the findElement atom.
v2.26.0.1
=========
* Updates to JavaScript automation atoms.
* Updated to use Wicked Good XPath (http://code.google.com/p/wicked-good-xpath)
as the XPath engine for the IE driver.
v2.26.0.0
=========
* Updates to JavaScript automation atoms.
v2.25.3.6
=========
* Modified behavior such that sending a Quit command on a non-existent
session is now a no-op, and does not return an error code.
v2.25.3.5
=========