Bringing automated testing to Microsoft Edge through WebDriver
Today we’re announcing support for automated testing of Microsoft Edge through the W3C WebDriver standard. To use WebDriver with Microsoft Edge, you need the MicrosoftWebDriver server on a Windows Insiders build of 10240 or newer.
WebDriver is an emerging standard through which Web developers can write tests to automate Web browsers for site testing. It provides a programmable remote control for developing complex user scenarios and running them in an automated fashion against your website in a browser. WebDriver is used by top web properties like Bing, Azure, SharePoint, Facebook, Google, and others to automate testing their sites within a browser. With this new capability, Microsoft Edge can be run through the same regression testing as other browsers, helping developers identify issues with less effort and making sites just work for our end users.
As we described in “Building a more interoperable Web with Microsoft Edge,” the Web is built on the principle of multiple independent, interoperable implementations of web standards, and true interoperability means that all web content, browsers, and specifications should align to the same well-defined behavior. Keeping that principle in mind, our implementation supports both the W3C WebDriver specification and the JSON Wire Protocol. The Browser Testing and Tools working group has been doing a great job of standardizing automation testing interfaces as a part of the emerging WebDriver specification. For backwards compatibility with existing tests, we have implemented the JSON Wire Protocol, so existing tests should also just work. We’re not done yet, as the WebDriver specification is still in an early stage of standardization, and we still have more features to implement. You can find out more about all of the WebDriver interfaces we have implemented on our Platform Status page here.
Borland contributions to Microsoft Edge
Microsoft has a long history of collaborating with industry technology leaders to bring the best-in-class experiences. In order to truly build an interoperable implementation that our customers can use, we have partnered with the Borland Silk team from Micro Focus, an industry leader in automation testing tools, to help contribute code to the WebDriver implementation in Microsoft Edge. The Borland team is also bringing their expertise in automation testing to help inform the next level of changes we should pursue in the W3C standard. Our thanks to the Borland team for all of their help in making the Web better!
How WebDriver works
To get started using WebDriver, you will need to download a testing framework of your choice along with an appropriate language binding and the MicrosoftWebDriver server. We have submitted updates to the C# and Java Selenium language bindings and are hoping to add support to other languages in the future.
WebDriver is disabled by default for security. In order to enable using WebDriver, you will need to download and install the MicrosoftWebDriver in a location with your test repository. You should be able to use Microsoft Edge’s WebDriver implementation just like you would use any other browser’s implementation.
Here’s an example of C# code opening a new browser Window, navigating to http://www.bing.com and searching webdriver.
We’re excited to deliver WebDriver in Microsoft Edge and look forward to hearing what you think! Take it for a spin and share your feedback in the comments below or @MSEdgeDev on Twitter.
– Clay Martin, Program Manager, Microsoft Edge
– John Jansen, Principal Software Engineer, Microsoft Edge
– Jatinder Mann, Senior Program Manager Lead, Microsoft Edge
– Mark Conway, Director, Micro Focus
Updated February 24, 2016 10:57 am
Awesome!!
Are there any recognized/recommended Nuget Package who enabled WebDriver for IE/Edge?
I can find easily one for Chrome but not for IE.
The MicrosoftWebDriver server is now online again and can be downloaded here: http://www.microsoft.com/en-us/download/details.aspx?id=48212
The previous binary (posted last night) was unsigned – this version is now signed by Microsoft. If you installed the previous binary, you can replace it with this version by first uninstalling the original (under Add/Remove Programs) and replacing it with the above.
Hi guys,
I want to test the new Edge Driver. I have installed the latest version of the WebDriver NuGet. However, the “using OpenQA.Selenium.Edge;” is not present in it. Can you give me further directions what I need to do to run your example?
Thank you!
You’ll need to update Webdriver.dll to the latest version (2.47): http://docs.seleniumhq.org/download/
Thanks!
Per the information about submitting updates to C# and Java Selenium language bindings, I’ve downloaded the latest version v2.46 for C#. I could not find any namespace OpenQA.Selenium.Edge in WebDriver.dll. Am I missing something?
You’ll need to update Webdriver.dll to the latest version (2.47): http://docs.seleniumhq.org/download/
Thanks!
May this proves to be the best web browser.. Hope all benchmark gets correct –
http://www.cyberkendra.com/2015/07/microsoft-edge-browser-is-faster-than.html
I can’t find this part in Visual Studio 2015 Nuget:
using OpenQA.Selenium.Chrome;
You’ll need to update Webdriver.dll to the latest version (2.47): http://docs.seleniumhq.org/download/
Thanks!
It is really good to hear that Webdriver support for Microsoft Edge is available. But at this stage I believe it is too immature to use it. Most of the method in Webdriver is not supported in the new edge driver. A very common example would by findElementByXpath. I was working with java and Webdriver. Due to this existing scripts developed in IE may need lots of refactoring.
But Yes I believe these will be fixed soon.
On the other hand comparing with IE I felt that the browser is pretty fast .And also automating this seems to be simplified now wherein we usually use lots of hacks while automating the IE browsers earlier. So that is +1 for edge.
Still working with Edge to find more on Selenium support
While I agree that EDGE is faster than IE11, however where it comes to automating browser I was finding difficulty configuring the Microsoft Webdriver to selenium GRID. it see the microsoft webdriver always listening on localhost:17556 port and when tried to configure on GRID i was getting server response code : 400. while the command executes fine from http://dev.modern.ie/testdrive/demos/webdriver/ invoking them remotely was challenge for me
Better if we could start WebDriver-enabled Edge in InPrivate mode. Without InPrivate, we will need to manually kill cookies, IndexedDB, Local Storage, etc.
any write up on how to configure Microsoft webdriver on selenium GRID
I think the mistake i did was to start the Microsoft Webdriver from command line and then trying to forward the request. configuring EDGE node on hub is no diff than how I was doing it for chrome and ie. for less mortals like me here is snippet
set seleniumjar=selenium-server-standalone-2.47.1.jar
# Start Selenium hub
start /MIN java -jar %seleniumjar% -port 4444 -timeout 1200 -newSessionWaitTimeout 150000 -browserTimeout 100 -role hub
start /MIN java -Dwebdriver.edge.driver=”C:\Program Files (x86)\Microsoft Web Driver\MicrosoftWebDriver.exe” -jar %seleniumjar% -role node -port %port% -browser browserName=”MicrosoftEdge”,maxInstances=5 -hub %hub_url_local%
Hey ,
I tried the above command to configure it to hub , but after MicrosoftEdge opens, the command prompt shuts down the server, do you know if it is something coded in MicrosoftEdge driver and if there is any workaround to keep ti running continuously ?
I just tried to make the driver listen on a non-localhost interface.
–host=localhost works as expected.
–host=127.0.0.1 fails with “HttpAddUrlToUrlGroup failed with 5”
–host=192.168.1.123 fails with “HttpAddUrlToUrlGroup failed with 5”
Adding that ip to the hosts file doesn’t work either.
Any ideas?
Did you use an elevated command prompt? Or run the batch file as administrator? The error “HttpAddUrlToUrlGroup failed with 5” showed up when the command was not ran as administrator.
running the cmd prompt as admin made the error go away. Thanks Mark!
I was trying to find the element by link text webDriver.findElements(By.linkText(… and I was getting error, its not clear which location startegy excpet Id is supported by microsoft webdriver.
class name
css selector
id – supported
name
link text
partial link text
tag name
xpath
I uses webdriver2.47 and newest MicrosoftWebDriver.exe,but i can’t get element by using executeScript.
Running the code as you’ve put it in the repository does not work.
Repro steps.
Install web driver from links provided.
Create console app.
Nuget in Selenium.WebDriver, Selenium.Support.
Run code, console window comes up fine.
When code hits the driver.Url=”https://www.bing.com” it throws an exception, as noted below.
NoSuchWindowException – An unhandled exception of type ‘OpenQA.Selenium.NoSuchWindowException’ occurred in WebDriver.DLL
Thoughts?
Healy in Tampa
Try this, On Edge Browser enter Settings > Open with Start page to A specific page or pages – Custom – i.e. http://www.google.com.
Using Edge Browser 20.10240.16384.0 : WebDriver 10.0.10240.0 this code generate an error: An exception of type ‘OpenQA.Selenium.WebDriverException’ occurred in WebDriver.dll but was not handled in user code
Additional information: The HTTP request to the remote WebDriver server for URL
http://localhost:51421/session timed out after 60 seconds.
I found a workaround, Settings > Open with Start page to A specific page or pages – Custom – i.e. http://www.google.com.
Attempting to select a checkbox generate an unknown error.
Element:
0
1
3
5
7
9
10
11
Code:
IWebElement element = driver.FindElement(by);
SelectElement select = new SelectElement(element);
select.SelectByText(option);
An exception of type ‘System.InvalidOperationException’ occurred in WebDriver.dll but was not handled in user code
Additional information: unknown error
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1126
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 920
at OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 781
at OpenQA.Selenium.Remote.RemoteWebElement.Execute(String commandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebElement.cs:line 867
at OpenQA.Selenium.Remote.RemoteWebElement.GetAttribute(String attributeName) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebElement.cs:line 381
at OpenQA.Selenium.Support.UI.SelectElement..ctor(IWebElement element) in c:\Projects\webdriver\dotnet\src\support\UI\SelectElement.cs:line 55
at SeleniumWebDriver.UserExtensions.Select(IWebDriver driver, By by, String option) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver\UserExtensions.cs:line 394
at SeleniumWebDriver.UserExtensions.Select(IWebDriver driver, String elementId, String option) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver\UserExtensions.cs:line 388
at SeleniumTest.Case7471.Case7471_A(IWebDriver driver) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver.UnitTests\case07471.cs:line 84
at SeleniumTest.Case7471.WebTest_Case7471_Main() in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver.UnitTests\case07471.cs:line 31
By.XPath is not implemented:
Code:
string elementLocator = “//” + element + “[@id='” + elementId + @”‘]”;
string result = driver.FindElement(By.XPath(elementLocator)).GetAttribute(attribute);
An exception of type ‘System.InvalidOperationException’ occurred in WebDriver.dll but was not handled in user code
Additional information: Locator not implemented
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1126
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 920
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 954
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElementByXPath(String xpath) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 700
at OpenQA.Selenium.By.c__DisplayClasse.b__c(ISearchContext context) in c:\Projects\webdriver\dotnet\src\webdriver\By.cs:line 167
at OpenQA.Selenium.By.FindElement(ISearchContext context) in c:\Projects\webdriver\dotnet\src\webdriver\By.cs:line 309
at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(By by) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 330
at SeleniumWebDriver.UserExtensions.GetAttributeById(IWebDriver driver, String element, String elementId, String attribute) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver\UserExtensions.cs:line 170
at SeleniumWebDriver.UserExtensions.CalendarSimpleTest(IWebDriver driver, String buttonID, String fieldID) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver\UserExtensions.cs:line 215
at SeleniumTest.Case10775.TestCase(IWebDriver driver, String formId, String dateFieldID) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver.UnitTests\case10775.cs:line 67
at SeleniumTest.Case10775.Case10775_A(IWebDriver driver) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver.UnitTests\case10775.cs:line 49
at SeleniumTest.Case10775.WebTest_Case10775_Main() in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver.UnitTests\case10775.cs:line 37
driver.SwitchTo().DefaultContent();
An exception of type ‘System.NotImplementedException’ occurred in WebDriver.dll but was not handled in user code
Additional information: not implemented
at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 1113
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 920
at OpenQA.Selenium.Remote.RemoteWebDriver.InternalExecute(String driverCommandToExecute, Dictionary`2 parameters) in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteWebDriver.cs:line 781
at OpenQA.Selenium.Remote.RemoteTargetLocator.DefaultContent() in c:\Projects\webdriver\dotnet\src\webdriver\Remote\RemoteTargetLocator.cs:line 133
at SeleniumTest.Case13399.Case13399_A(IWebDriver driver) in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver.UnitTests\case13399.cs:line 42
at SeleniumTest.Case13399.WebTest_Case13399_Main() in z:\RegressNet\ASNA.QA.Testing.Tools\ASNA.QA.Selenium.WebDriver.UnitTests\case13399.cs:line 31
Is there an option to get an updated or preview version of the MicrosoftWebDriver for Edge?
Found it!
Insider driver 10532:
http://www.microsoft.com/en-us/download/details.aspx?id=48740
I have Selenium Web Driver(v.2.47.0) and Selenium Web support (v.2.47.0) installed as references for my project and MicrosoftWebDriver.exe installed on my local machine. When I use the command – RemoteWebElement element = (RemoteWebElement)driver.FindElementById(“sb_form_q”); , I get a compilation error saying ‘OpenQA.Selenium.IWebDriver; does not contain a definition for ‘FindElementById’,
If I use the following command – WebDriver.FindElement(By.Id(“sb-form-q”)); it says that object reference not found.
Are any references missing or are these not implemented ?
How do you plan on supporting WebDriver in Windows 10 Mobile?
I see the .manage().getCookies() and deleteCookies() is not working, while deleteCookies() does not throw any exception but does not delete the cookies, getCookies() call is throwing error
13:15:15.442 INFO – Executing: [get current window handle])
13:15:15.463 INFO – Done: [get current window handle]
13:15:15.536 INFO – Executing: [get all cookies])
13:15:15.758 WARN – Exception thrown
java.lang.NullPointerException
at org.openqa.selenium.remote.RemoteWebDriver$RemoteWebDriverOptions.getCookies(RemoteWebDriver.java:699)
at org.openqa.selenium.support.events.EventFiringWebDriver$EventFiringOptions.getCookies(EventFiringWebDriver.java:524)
at org.openqa.selenium.remote.server.handler.GetAllCookies.call(GetAllCookies.java:34)
at org.openqa.selenium.remote.server.handler.GetAllCookies.call(GetAllCookies.java:1)
at java.util.concurrent.FutureTask.run(Unknown Source)
at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:176)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
13:15:15.762 WARN – Exception: null
13:15:15.949 INFO – Executing: [delete session: 1580be57-1fe0-47f4-8b0f-ebaf947b6d72])
Listening on http://localhost:27918/
Stopping server.
When using sendKeys some characters are omitted. Example:
WebDriver driver = new EdgeDriver();
driver.get(“https://www.google.com”);
WebElement searchBar = driver.findElement(By.name(“q”));
searchBar.sendKeys(“ascii value of @”);
searchBar.submit();
driver.close();
In the example above the “at” character is not sent to the google search bar.
Using selenium java 2.48.2
I can reproduce the problem with @ character. Sendkeys funcion is not displayed @ character in simple input box.
This is my configuration:
Target Machine (Hub node where tests are run): Win 10 build 10585.104, MS Edge 25.10586.0.0 and MS EdgeHTML 13.10586
Selenium framework: SeleniumHQ (for Java): 2.48.0
I am using Selenium Grid to run my suite. In this case, I was only doing conceptual test of Egde implementing a basic test:
1. Start Hub in local machine (Win 7) opening console (administrator privileges)
2. Register Node in Hub in target remote machine (Win 10 build 10585) opening console (in this case without administrator privileges because in other way edge hangs when create new session).
Setting up my grid and checking that everything is ok when I try to write my account name in login page I can not see the @ and my basic test fails (wrong credentials).
I have introduced @ by hand in the moment edge is opened (interrupt point) and I can see symbol. I have sent “@@@@@@@@@@@@@@@” to the text field and I can not see any. In summary, I have tried many things and I can not see @
When I started with Web Automation Testing using Selenium (Java) I remember this behaviour in old versions of Firefox and Chrome. I not really sure which one but it was reproducible in old version.
This partial basic code (implementated with pageobject) IS WORKING with Firefox 35.0 and Chrome 48.0.2564.109 but NOT IS WORKING with Edge’s version I put at the beginning of my comment.
WebElement element = WebDriverExtensions.findElement(context, By.cssSelector(“input[name=’username’][type=’email’]”));
element.clear(); element.sendKeys(email);
Front Developers are using AngularJS and are validating user’s text input to match with a welformatted email:
I afraid that current Edge version does not support sendkeys with this kind of character, maybe the problem is front on-line validation and Edge has to suits these situations because they are really common.
Best regards
9 month passed and no new Microsoft WebDriver versions were released.
I still see WebDriver only for Windows 10 Build 10240 (7/24/2015)
Is it really supported by Microsoft ? Looks like no.
Hey Vasyl,
I’m the PM for WebDriver. We currently have three releases:
Windows 10 (10240)
http://bit.ly/20bepqN
Windows 10 Fall 2015 Update (10586)
http://bit.ly/1QFJOiS
Windows Insiders (Currently 14316)
http://bit.ly/1SQPuWt
Note that the Windows Insiders version gets updated with the Windows Insiders releases.