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. v4.16.0.0 ======== * Fixed typos in logged messages (#13120) v4.14.0.0 ======== * Fix potential null pointer access in CookieManager v4.11.0.0 ======== * Ignore process id match when finding the window handle - IE Mode on Edge. (#12246) v4.8.1.0 ======== * Update atoms (Use .textContent instead of .innerHTML in clear() action (#11504)) v4.8.0.0 ======== * Remove unnecessary executable permission bit from several files (#11502) v4.7.0.0 ======== * Ignore Zoom Level for Edge IE Mode (#11055) v4.6.0.0 ======== * Enable msIEModeAlwaysWaitForUnload for Edge IE Mode (#11079) v4.5.0.0 ======== * Auto-locate Edge if IE mode requested and location not specified * If system IE redirects to Edge, automatically use Edge in IE Mode v4.3.0.0 ======== * fix Edge IE mode issue that sometimes cannot get the handle of a newly opened window (#10702) * Disable popup blocking for Edge in IE Mode (#10869) v4.2.0.0 ======== * Check process ID when searching for Edge window handle v4.0.0.0 ======== * (on behalf of Gavin Xu) Updated atoms to allow IE driver to find elements. * (on behalf of Gavin Xu) Fixed use of NewWindow3 API for use with Microsoft Edge in IE Mode. * Made further improvements for using the driver with Microsoft Edge in IE Mode. v3.150.2.0 ========== * Updates to JavaScript automation atoms. * Changed source to compile against Windows 10 SDK. This means that the executable may no longer run on versions of Windows less than Windows 10. v3.150.1.1 ========== * Made checking of the Content-Length header case-insensitive. This fixes a number of issues where sessions cannot be started or where commands fail because the HTTP client made a choice to not use properly-cased header names. v3.150.1.0 ========== * Reverted change to use effective style for determining element visibility. If a containing element has scrollbars, simply using the client bounding rect to determine the click point could lead the click point behind a scrollbar be determined as "in view," when clicking on the point would instead click on the scrollbar. A previous fix for this issue was not sufficiently robust in all scenarios, leading some elements to be seen as not displayed at all. Accordingly, this change has been reverted until a more correct one can be created. * Other updates to JavaScript automation atoms. v3.150.0.0 ========== * (on behalf of Stanley Hon) Added basic support for IEDriver to drive Chromium-based Edge in Internet Explorer mode. Users can do this by setting the `ie.edgechromium` property to `true`, and by supplying the path to the Chromium-based Edge executable in the `ie.edgepath` property of the `se:ieOptions` capability object. Note that this feature is only available on Windows, as Chromium-based Edge only supports Internet Explorer Mode on Windows. Moreover, users cannot switch session types from normal mode to Internet Explorer Mode or vice-versa; only one session type is allowed. * Made driver work with and elements * (on behalf of Marc Fisher) Fixed FTP and HTTP proxy markers for setting web proxy with the IE driver. Fixes issue #7152. * Added additional error information to error messages encountered during navigation. * Removed support from IE driver for "desiredCapabilities" in new session requests. The W3C WebDriver Specification does not recognize any property in the payload for the new session command other than "capabilities". The IE driver has long supported the presence of "desiredCapabilities" as a fallback for older, obsolete language bindings. Now that we are in the process of creating the Selenium 4.0 language bindings, this legacy compatibility should no longer be necessary. Users using this version of the IE driver with language bindings prior to 4.0 may encounter issues if the bindings do not properly format the new session request; nevertheless, this change will not be reverted, as future versions of the language bindings should properly format the new session command. v3.141.59.3 =========== * Made driver calculate viewport with window.innerHeight/Width instead of using documentElement.clientHeight/Width. This follows the definitions of the W3C WebDriver Specification for calculating the in-view center point of an element. * Fixed to return empty object from JavaScript instead of null. * Fixed IE driver to ignore unknown timeouts for set timeout command. According to the W3C WebDriver Specification, additional timeouts not specified are valid syntax, though they are ignored by the driver. * Updated driver to allow detection of alerts with 'do not create' checkbox. v3.141.59.2 =========== * Slightly modified setting IE window to have focus when sending input. This code only affects the browser when the requireWindowFocus capability is set at session start. v3.141.59.1 =========== * Added checking for max expiration date in IE driver cookie handling. Attempting to add a cookie with a very large expiration date caused the IE driver to crash because of overflows in the C++ standard library time formatting functions. This commit now avoids the crash by enforcing a maximum cookie expiration time of 2,147,483,647 (2^32 - 1) seconds from the time the cookie is attempting to be set. At the time of this writing (2019), that means an expiration of the cookie sometime over 68 years into the future (2087). If the intended expiration time is beyond that limit, the driver will now return "unable to set cookie" error. As an internal implementation detail, the driver is migrating from the "expires" attribute to the "max-age" attribute of the cookie string, as versions of IE below 9 are no longer supported. Additionally, while it would be possible to use "expires" and get a longer expiration time, (somewhere around the year 3000), the distinction between a cookie expiring after 68 years and one expiring in just under 1000 years is (or ought to be) largely meaningless in the context of a website. Fixes issue #7122. v3.141.59.0 =========== * Rollup of fixes since previous release. No additional changes. v3.141.5.13 =========== * Fixed execution of user JavaScript to allow comment at end of line. v3.141.5.12 =========== * (on behalf of Reinhold Degenfellner) Updated to allow retries for finding the upload file selection dialog. Fixes issue #6991. * Modified to prevent navigation to directories using file:// protocol. Navigating to a directory will open a Windows Explorer window, not open the directory in the IE frame, and there is no way to automate the resulting window. This is a deliberate deviation from the W3C WebDriver Specification, as it's impossible to yield spec-compliant behavior from Internet Explorer. * Made driver return lowercase utf-8 for charset in content-type header. v3.141.5.11 =========== * (on behalf of Reinhold Degenfellner) Fixed crash when attempting to upload files. Fixes issue #6976. v3.141.5.10 =========== * (on behalf of Ben Kucera) Updated proxy settings to set proxy bypass addresses. Fixes issue #6086. * Updated to be able to close Windows 10 credentials dialog. When Microsoft updated Windows 10's credentials prompt dialog, they made it a dialog that is not a standard alert dialog and therefore not able to be automated using standard Windows automation techniques. With a recent preview release, it became possible to manipulate this dialog using the UI Automation feature of Windows. The driver will now be able to accept or dismiss this credentials dialog now. Please note that there is still no supported solution for entering credentials, as there is no support for that feature in the W3C WebDriver Specification. v3.141.5.9 ========== * Enabled serialization of the FileList object from file upload elements (the return value of the files property in JavaScript). * Improved recognition of Protected Mode boundary crossing on navigation, particularly with URLs beginning with "about:blank" v3.141.5.8 ========== * Improved driver use with invalid Protected Mode settings. Currently, when the user does not set the Protected Mode settings of the browser and sends the capability to bypass the checks for those settings, the driver will attempt to predict when a Protected Mode boundary will be crossed, and set in motion a process to reattach itself to the newly created browser. This process is far from perfect. It is subject to really challenging race conditions that are truly impossible to eliminate entirely, because of the architecture of the browser itself. Nevertheless, even in its flawed state, this is still a better outcome than it was previously for users. Please note that the advice and support policy of the IE driver will continue to be that the user must set the Protected Mode settings of the browser properly before using the driver. Any "issues" that arise by not having the settings set, but that disappear when the settings are corrected, are not considered by the project to be valid issues. This will include, but not be limited to, issues like abandoned browser instances not being closed, use of multiple instances of the driver where the wrong browser window is connected to and automated, and issues where the driver appears to hang upon navigation to a new page. If the problem disappears when the browser is properly configured, any issue reports will be immediately closed with a note to properly configure the browser and remove the capability. The following situations should be at least partially mitigated by the change: * Navigation to a new page * Clicking on a link (specifically an tag) that will lead to a navigation to a new page * Clicking a link that opens a new window Other cases, like navigating backward and forward through the browser history, clicking an element that submits a form, and so on, may not be handled. In those cases, issue reports will be summarily closed, unless a specific pull request fixing the issue is also provided. Additionally, use of things like proxies to capture traffic between the browser and web server may miss some traffic because of the race conditions inherent in the mechanism used to reattach to a newly created browser. Again, these race conditions are unavoidable, and issue reports that are based on them will be immediately closed with a note indicating that the browser must have its settings properly set. These strict guidelines are not intended to be harsh, and are not put in place with the intent to avoid investigating and fixing issues; rather, they must be enforced because the underlying architecture of the browser makes them unavoidable. v3.141.5.7 ========== * Fixed uninitialized variable in driver. v3.141.5.6 ========== * Fixed proper keyboard event values for extended keys. v3.141.5.5 ========== * Added hack for handling cases where document.designMode is on. In IE, when document.designMode is turned on, the browser is put into a state where anonymous JavaScript functions cannot be run. Obviously, this breaks a huge portion of the driver, so the driver will now force documents out of designMode when attempting to execute script. There should be vanishingly few real-world cases where this has an adverse effect, with most sites using the contentEditable attribute instead. v3.141.5.4 ========== * Added hack for detection of IE in full screen mode. v3.141.5.3 ========== * Again updated Unicode character processing for composition. The previous change in 3.141.5.1 for using composed Unicode character sequences on send and decomposed on retrieve was disturbingly naive, and entirely incorrect. This revision mostly reverts that change, with the difference of checking for "single-character" encoding sequences when sending. The IE driver will no longer produce the same input for some key combinations as other drivers (see some Hangul sequences for concrete examples). The mitigating factor of this difference in behavior, however, is that the driver should now produce identical input and output between sending keys and reading the text via either getting an element's text or its attributes. Hopefully. There are likely to continue to be corner cases where use of Unicode characters, does not entirely match up to expectations. This is particularly so in languages where individual code points can be combined to form other glyphs identical to other individual code points. v3.141.5.2 ========== * Enabled create new window command to create tabs. This change overcomes the limitation of only creating top-level browser contexts in new top-level windows. The IE driver can now open new tabs when using the create new window command, as in the .NET language bindings: driver.SwitchTo().NewWindow(WindowType.Tab); Note carefully that this change is only valid when explicitly using the create new window command. It does not affect clicking on links that open new top-level browsing contexts; those will continue to open in new top-level windows. Furthermore, it is imperative to note that this feature will absolutely not work when Protected Mode properties are misconfigured. In other words, if your code uses the .NET InternetExplorerOptions `IntroduceInstabilityByIgnoringProtectedModeSettings` property (or its equivalent in any other language bindings), this feature will not work. Issue reports submitted regarding this will be summarily closed. v3.141.5.1 ========== * Implemented create new window commmand. The W3C WebDriver Specification recently added the ability to create a new top-level browsing context, or what appears to the user to be a new tab or window. This change implements that command. Though the command payload contains a hint argument as to what type of new top-level browsing context the user desires (tab or window), the driver implementation is free to ignore this type hint if it does not support the type being requested. Since the IE driver has never supported, and still does not support, creation of new top-level browsing contexts using a new tab, in accordance with the spec, the driver will create the new context in a new window, even if a new tab is requested. Please note this is not a bug; it is as designed, and is still fully compliant with the specification with this behavior. * Fixed edge case for clicking element. In the case of a fixed element where the top-left corner of the element is outside the view port, the click point calculation was not taking the offset of the top- left when looking for the in-view center of the element. This change fixes that issue. * Updated Unicode character processing for combining characters. In a previous revision, the IE driver was modified to normalize Unicode strings that used combining characters to compose a single glyph when sending keystrokes. This commit implements the reverse of that operation when reading text data, decomposing the glyph into its combining characters if required. This is a potential destablizing change for text sequences that use combining characters, and care should be taken by users to understand the potential differences if handling text using such character combinations causes unexpected results. * Corrected error statuses returned for switching frames. The IE driver now returns the correct status as specified by the W3C WebDriver Specification for error conditions encountered when attempting to switch frames. * Modified to allow null value for script timeout. The W3C WebDriver Specification has contradictory language regarding the script timeout. On the one hand, it specifies that the value of the script timeout can be `null`, indicating an indefinite timeout. On the other hand, it specifies that when setting or getting timeouts, the value of any timeout must be an integer between 0 and 2^53 - 1. Since geckodriver has made the assumption that the former condition is the correct interpretation, and the maintainers of geckodriver have added a test to the W3C Web Platform Tests for WebDriver that expects this interpretation, the IE driver is being modified to follow that decision. It is the opinion of the developers of the IE driver that this is the incorrect interpretation, but there is no recourse to have the geckodriver maintainers revisit their decision. v3.141.5.0 ========== * Added logging of JavaScript errors when executing scripts. * Fixed incorrect error response format for invalid commands in IE. Previously, when an invalid command was sent to the IE driver, the response was not completely valid for the W3C dialect of the wire protocol. In particular, the distinction was lost between an unknown URL and an invalid HTTP verb, and this code was not properly converted when the driver was updated to implement the specification. This change fixes that. Correct responses are now sent back for both invalid command cases. Additionally, the driver no longer hand-codes JSON for these responses, instead creating a valid Response object, and using the common serialization mechanism for transmission. Finally, this commit includes some minor code formatting cleanup, which does not affect the functionality of the driver. Fixes issue #6828. v3.141.0.6 ========== * Modified to allow the driver to handle supplementary Unicode characters in sendKeys. The IE driver lost the ability to check for surrogate pairs after implementing spec compliance in 3.5. The driver will still convert the keys being sent using sendKeys from UTF-8 to UTF-16 (Windows development default for wide strings), but it will now properly check for supplementary characters by checking for surrogate pairs. * Moved normalization of Unicode strings to InputManager. Rather than normalizing every conversion from UTF-8, it is more correct to only perform the normalization when using the Unicode strings for keyboard input. Accordingly, the normalization code is being moved from StringUtilities to the InputManager class. v3.141.0.5 ========== * Updated element obscured algorithm to handle shadow DOM polyfills. Shadow DOM for IE is problematic. Shadow DOM is only available in IE as a polyfill. If an element is part of a Shadow DOM (using a polyfill), IE's elementsFromPoint implementation will show the component elements, not necessarily the Web Component root element itself. If the direct parent of the Web Component host element is in this list, then it counts as a direct descendent, and won't be obscured. Note that a potential enhancement to this change is to walk the DOM tree up until an ancestor is found that does not have a shadow root, but that enhancement is not implemented at present. * Added synchronization code. The IE driver can only handle one command at a time. Commands from multithreaded client libraries should block on the second thread's command until the first thread's executing command is complete. * Reverted earlier change to the obscured element algorithm. The previous changes were incorrect. Any value other than 'none' for the pointerEvents CSS property on a non-SVG element will result in the element receiving pointer events. * Removed isFocusable atom from sendKeys command. The isFocusable atom does not provide the correct information as to whether an element is focusable according to the W3C and WHATWG DOM specifications. This change removes the use of that atom, and relies instead on the abililty to set focus to the element before sending the keystrokes. v3.141.0.4 ========== * Fixed to correctly set Content-length header for HTTP responses. Not setting this header properly is a protocol violation, and strict HTTP clients (like .NET's HttpWebRequest/HttpWebResponse) will reject such an HTTP response for the 1.1 version of the HTTP protocol. * Reduced JavaScript errors during findElement(s). In most cases, executing JavaScript is an atomic action for the IE driver. However, in the off chance that there is a page refresh during the execution of JavaScript, converting the result of the script to a JSON object for serialization might cause an error, in which case we should return the appropriate error to the caller. One place, however, where this might be common is executing findElement(s) across a page navigation. This change makes the driver return the proper error in the post-processing of a script execution. It also recognizes the findElement(s) case, ignoring JavaScript errors in finding elements, and returning the proper structure (an empty list or a "no such element" error) in its place. This lets things like explicit waits retry the find, which may succeed once the page navigation has completed and the DOM available for querying again. * Tweaked obscured element algorithm. The algorithm used by the IE driver to detect obscured elements checks the value of the pointer-events CSS computed style property. This property can have valid values of "auto" and "none" which affect whether to consider an element "obscured." However, the property can also contain other values for SVG elements. If the element in question is not an SVG element, then values other than "none" and "auto" must be ignored, and the element considered not to obscure the target element. * Fixed compile warnings. v3.141.0.3 ========== * Updated Civetweb dependency to version 1.11. * Modified IE driver to no longer always send Connection: close header. This is a potentially destablizing change, as the driver now should correctly use keep-alive for HTTP requests and responses. While this should not matter, the driver has not ever executed true with keep- alive connections, so care should be used. v3.141.0.2 ========== * Updating IE scroll-into-view algorithm for element click. This update makes the scroll-into-view algorithm for element click to be compliant with the W3C WebDriver Specification. * Completed IE implementation of strictFileInteractability capability. By default, the IE driver can interact with hidden elements. By setting this capability to false, it forces the driver to make sure the file upload element is interactable like other elements. * Updates to JavaScript automation atoms. v3.141.0.1 ========== * Updated error message return from unserializable JavaScript results. In the case where a user JavaScript execution completes successfully, but the resulting option is not serializable via JSON (because of cyclical references or similar), the error message that the execution errored due to the failed serialization was being suppressed. * Added support for strictFileInteractability capability. The latest editors' drafts of the W3C WebDriver Specification as a living document have introduce the "strictFileInteractability" capability for handling elements. This change makes the driver aware of that capability. * Removed premature break statements in obscured element check. When looping through the elements returned by elementsFromPoint, the driver was calling a break statement early, preventing clear error messages for which element is obscuring the element to be clicked. v3.141.0.0 ========== * Release to synchronize with release of Selenium project. * Updates to JavaScript automation atoms. * Version number updated to continue with "digits of pi" theme. v3.14.0.15 ========== * Fixed change in behavior recognizing closing of showModalDialog windows. Fixes issue #6574. v3.14.0.14 ========== * Fixed retrieval of CSS properties that return non-string values. Fixes issue #6527. v3.14.0.13 ========== * Fixed multiple file upload element detection. v3.14.0.12 ========== * Allowed duration property of pause actions to be omitted. * Cleaned up variant copying for getElementAttribute command. * Expanded inline element detection for obscured elements. This commit expands on the hack that was introduced in 3.14.0.11. It turns out that ) should be trimmed of leading and trailing whitespace after calling getVisibleText on the element before comparison. Links with text that contains leading or trailing non-breaking spaces ( ) were having the non-breaking spaces converted to regular spaces, but not trimmed after the fact. This commit corrects that oversight. * Made IE cookie expiration times integer values. Some WebDriver implementations have used floating point values for the expiration time of a cookie as serialized in the wire protocol. The W3C WebDriver Specification dictates that expriation times should be integer values. This commit makes the driver conform to the specification. * Modified to throw exception clicking on file upload elements in IE. The WebDriver W3C Specification states that if a user attempts to click a file upload element (), an error should be returned. This is consistent with the intended behavior of WebDriver from the start, which is that to upload a file, one should use sendKeys, not click() on the input element. This now codifies that behavior with returning an error. Note that if users have erroneously been using click() with file upload elements, then using some external library (Robot Framework, Sikuli, etc.) to handle the resulting file selection dialog, their code will now break, in that the click() method will throw an exception, and the element will not be clicked. Those users should update their code accordingly. v3.11.1.5 ========= * Initial implementation of taking element screenshots. This is an extremely naive implmementation, and should not be considered complete. v3.11.1.4 ========= * Fixed finding child elements to return proper error if parent element is stale. Fixes issue #5700. v3.11.1.3 ========= * Fixed detection of obscured elements when top element is not displayed. Fixes issue #5668. v3.11.1.2 ========= * Changed COM variant to JSON serialization in IE. There is an expectation that if a result from JavaScript is "integral," that it is serialized for return to the calling code as an integral number rather than a floating- point number. Previous versions of the JSON serializer used by the IE driver would (incorrectly) serialize a floating-point value with no decimal part as being an integer. After updating to a later version, the serializer now (correctly) serializes floating-point values as floating- point values, with a trailing ".0" to indicate a floating-point value. While this is the correct behavior by the serializer, it breaks the expectations of the language bindings. Therefore, we check to see if the variant value has a decimal part, and if it has none, convert it to an integer for serialization by the JSON library. * Updated JsonCpp library to latest source code. Fixes issue #5664. v3.11.1.1 ========= * Separated out detection of focusable elements for sendKeys in IE. Allows separate error messages for attempting to send keys to a non-focusable element. Also fixes sending keystrokes to