Microsoft Edge WebDriver- What Everybody Ought to Know About

WebDriver
33 Shares
Microsoft Edge WebDriver- What Everybody Ought to Know About

As you might know, one of the best available frameworks for creating web automation tests is Selenium WebDriver. Microsoft publicly announced that their new Windows 10 web browser- Edge is going to support WebDriver automation (Microsoft Edge WebDriver). Of course I wanted to try it as fast as I can, so I prepared everything needed and created several tests. I’m going to present to you their source code and results.

Create Your First WebDriver Test Project

1. Create New Test Project in Visual Studio.
WebDriver Test Project
2. Install NuGet package manager and navigate to it.
Open NuGet Manage Console
3. Search for Selenium and install the first item in the result list
Install Selenium WebDriver Package

4. Search and install Selenium.Firefox.WebDriver. Through this package you will be able to run tests in Firefox.

Microsoft Edge WebDriver C# Code

Test’s Test Case

The primary goal of the below tests is going to be to create a “healthy” diet menu from specially designed by me- diet generator page.
Healthy Menu Generator Page

Code Examples in Firefox WebDriver

The automation of the above form using Firefox WebDriver is a trivial task.

[TestClass]
public class HealthyDietMenuGeneratorTestsFirefox
{
private IWebDriver _driver;
[TestInitialize]
public void SetupTest()
{
_driver = new FirefoxDriver();
_driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
}
[TestCleanup]
public void TeardownTest()
{
_driver.Quit();
}
[TestMethod]
public void FillAwsomeDietTest()
{
_driver.Navigate().GoToUrl(@”http://automatetheplanet.com/healthy-diet-menu-generator/”);
var addAdditionalSugarCheckbox = _driver.FindElement(By.Id(ninja_forms_field_18));
addAdditionalSugarCheckbox.Click();
var ventiCoffeeRadioButton = _driver.FindElement(By.Id(ninja_forms_field_19_1));
ventiCoffeeRadioButton.Click();
var selectElement = new SelectElement(_driver.FindElement(By.XPath(//*[@id=’ninja_forms_field_21′])));
selectElement.SelectByText(7 x BBQ Ranch Burgers);
var smotheredChocolateCakeCheckbox = _driver.FindElement(By.Id(ninja_forms_field_27_2));
smotheredChocolateCakeCheckbox.Click();
var addSomethingToDietTextArea = _driver.FindElement(By.Id(ninja_forms_field_22));
addSomethingToDietTextArea.SendKeys(@”Goi cuon- This snack made from pork, shrimp, herbs, rice vermicelli and other ingredients wrapped in rice paper is served at room temperature. It’s “meat light,” with the flavors of refreshing herbs erupting in your mouth.”);
var rockStarRating = _driver.FindElement(By.XPath(//*[@id=’ninja_forms_field_20_div_wrap’]/span/div[11]/a));
rockStarRating.Click();
var firstNameTextBox = _driver.FindElement(By.Id(ninja_forms_field_23));
firstNameTextBox.SendKeys(Anton);
var lastNameTextBox = _driver.FindElement(By.Id(ninja_forms_field_24));
lastNameTextBox.SendKeys(Angelov);
var emailTextBox = _driver.FindElement(By.Id(ninja_forms_field_25));
emailTextBox.SendKeys(aangelov@yahoo.com);
var awsomeDietSubmitButton = _driver.FindElement(By.Id(ninja_forms_field_28));
awsomeDietSubmitButton.Click();
}
}

When the object is created for the first time, all elements are initialized through the WebDriver’s PageFactory.

public class HealthyDietGeneratorPage
{
public readonly string Url = @”http://automatetheplanet.com/healthy-diet-menu-generator/”;
public HealthyDietGeneratorPage(IWebDriver browser)
{
PageFactory.InitElements(browser, this);
}
[FindsBy(How = How.Id, Using = ninja_forms_field_18)]
public IWebElement AddAdditionalSugarCheckbox { get; set; }
[FindsBy(How = How.Id, Using = ninja_forms_field_19_1)]
public IWebElement VentiCoffeeRadioButton { get; set; }
[FindsBy(How = How.XPath, Using = //*[@id=’ninja_forms_field_21′])]
public IWebElement BurgersDropDown { get; set; }
[FindsBy(How = How.Id, Using = ninja_forms_field_27_2)]
public IWebElement SmotheredChocolateCakeCheckbox { get; set; }
[FindsBy(How = How.Id, Using = ninja_forms_field_22)]
public IWebElement AddSomethingToDietTextArea { get; set; }
[FindsBy(How = How.XPath, Using = //*[@id=’ninja_forms_field_20_div_wrap’]/span/div[11]/a)]
public IWebElement RockStarRating { get; set; }
[FindsBy(How = How.Id, Using = ninja_forms_field_23)]
public IWebElement FirstNameTextBox { get; set; }
[FindsBy(How = How.Id, Using = ninja_forms_field_24)]
public IWebElement LastNameTextBox { get; set; }
[FindsBy(How = How.Id, Using = ninja_forms_field_25)]
public IWebElement EmailTextBox { get; set; }
[FindsBy(How = How.Id, Using = ninja_forms_field_28)]
public IWebElement AwsomeDietSubmitButton { get; set; }
}

The code of the test is almost identical with the only difference that the elements initializations are now a responsibility of the page object.

public class HealthyDietMenuGeneratorTestsFirefox
{
private IWebDriver _driver;
[TestInitialize]
public void SetupTest()
{
_driver = new FirefoxDriver();
_driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
}
[TestCleanup]
public void TeardownTest()
{
_driver.Quit();
}
[TestMethod]
public void FillAwsomeDietTest_ThroughPageObjects()
{
var healthyDietGeneratorPage = new HealthyDietGeneratorPage(_driver);
_driver.Navigate().GoToUrl(healthyDietGeneratorPage.Url);
healthyDietGeneratorPage.AddAdditionalSugarCheckbox.Click();
healthyDietGeneratorPage.VentiCoffeeRadioButton.Click();
var selectElement = new SelectElement(healthyDietGeneratorPage.BurgersDropDown);
selectElement.SelectByText(7 x BBQ Ranch Burgers);
healthyDietGeneratorPage.SmotheredChocolateCakeCheckbox.Click();
healthyDietGeneratorPage.AddSomethingToDietTextArea.SendKeys(@”Goi cuon- This snack made from pork, shrimp, herbs, rice vermicelli and other ingredients wrapped in rice paper is served at room temperature. It’s “meat light,” with the flavors of refreshing herbs erupting in your mouth.”);
healthyDietGeneratorPage.RockStarRating.Click();
healthyDietGeneratorPage.FirstNameTextBox.SendKeys(Anton);
healthyDietGeneratorPage.LastNameTextBox.SendKeys(Angelov);
healthyDietGeneratorPage.EmailTextBox.SendKeys(aangelov@yahoo.com);
healthyDietGeneratorPage.AwsomeDietSubmitButton.Click();
}
}

The execution time almost didn’t change- ~15 seconds. Anyway, it was a little bit faster.
Test Execution Results Firefox WebDriver Page Objects

Microsoft Edge WebDriver Prerequisites

1. Download Microsoft Edge WebDriver executable from the official Microsoft website.
Download Microsoft Edge WebDriver
2. Install Microsoft Edge WebDriver from the previously downloaded setup.
Install Microsoft Edge WebDriver
3. Create a virtual machine or upgrade your OS to Windows 10, the Microsoft Edge WebDriver is compatible only with it.

4. Install Selenium.Microsoft.Webdriver2 NuGet package to your project.

Code Examples in Microsoft Edge WebDriver

On theory, the same tests should be able to be executed through the new WebDriver, only with the exchange of the driver type. The setup for the Microsoft Edge WebDriver is a little bit more complicated.  Configure Copy Always to true for the MicrosoftWebDriver.exe file. Then we set the constructor of EdgeDriver to search for the driver in the currently executing folder.

[TestClass]
public class HealthyDietMenuGeneratorTestsEdge
{
private IWebDriver _driver;
[TestInitialize]
public void SetupTest()
{
var options = new EdgeOptions()
{
PageLoadStrategy = EdgePageLoadStrategy.Eager
};
_driver = new EdgeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), options);
_driver.Manage().Timeouts().PageLoad = TimeSpan.FromSeconds(5);
}
[TestCleanup]
public void TeardownTest()
{
_driver.Quit();
}
[TestMethod]
public void FillAwsomeDietTest()
{
_driver.Navigate().GoToUrl(@”http://automatetheplanet.com/healthy-diet-menu-generator/”);
var addAdditionalSugarCheckbox = _driver.FindElement(By.Id(ninja_forms_field_18));
addAdditionalSugarCheckbox.Click();
var ventiCoffeeRadioButton = _driver.FindElement(By.Id(ninja_forms_field_19_1));
ventiCoffeeRadioButton.Click();
var selectElement = new SelectElement(_driver.FindElement(By.Id(ninja_forms_field_21)));
selectElement.SelectByText(7 x BBQ Ranch Burgers);
var smotheredChocolateCakeCheckbox = _driver.FindElement(By.Id(ninja_forms_field_27_2));
smotheredChocolateCakeCheckbox.Click();
var addSomethingToDietTextArea = _driver.FindElement(By.Id(ninja_forms_field_22));
addSomethingToDietTextArea.SendKeys(@”Goi cuon- This snack made from pork, shrimp, herbs, rice vermicelli and other ingredients wrapped in rice paper is served at room temperature. It’s “meat light,” with the flavors of refreshing herbs erupting in your mouth.”);
var rockStarRating = _driver.FindElement(By.XPath(//*[@id=’ninja_forms_field_20_div_wrap’]/span/div[11]/a));
rockStarRating.Click();
var firstNameTextBox = _driver.FindElement(By.Id(ninja_forms_field_23));
firstNameTextBox.SendKeys(Anton);
var lastNameTextBox = _driver.FindElement(By.Id(ninja_forms_field_24));
lastNameTextBox.SendKeys(Angelov);
var emailTextBox = _driver.FindElement(By.Id(ninja_forms_field_25));
emailTextBox.SendKeys(aangelov@yahoo.com);
var awsomeDietSubmitButton = _driver.FindElement(By.Id(ninja_forms_field_28));
awsomeDietSubmitButton.Click();
}
[TestMethod]
public void FillAwsomeDietTest_ThroughPageObjects()
{
var healthyDietGeneratorPage = new HealthyDietGeneratorPage(_driver);
_driver.Navigate().GoToUrl(healthyDietGeneratorPage.Url);
healthyDietGeneratorPage.AddAdditionalSugarCheckbox.Click();
healthyDietGeneratorPage.VentiCoffeeRadioButton.Click();
var selectElement = new SelectElement(healthyDietGeneratorPage.BurgersDropDown);
selectElement.SelectByText(7 x BBQ Ranch Burgers);
healthyDietGeneratorPage.SmotheredChocolateCakeCheckbox.Click();
healthyDietGeneratorPage.AddSomethingToDietTextArea.SendKeys(@”Goi cuon- This snack made from pork, shrimp, herbs, rice vermicelli and other ingredients wrapped in rice paper is served at room temperature. It’s “meat light,” with the flavors of refreshing herbs erupting in your mouth.”);
healthyDietGeneratorPage.RockStarRating.Click();
healthyDietGeneratorPage.FirstNameTextBox.SendKeys(Anton);
healthyDietGeneratorPage.LastNameTextBox.SendKeys(Angelov);
healthyDietGeneratorPage.EmailTextBox.SendKeys(aangelov@yahoo.com);
healthyDietGeneratorPage.AwsomeDietSubmitButton.Click();
}
}

The same test executed with Firefox Driver finished for 16 seconds; now it was run for 4 seconds using the new Microsoft Edge WebDriver.
Microsoft Edge WebDriver Test Results
The page object implementation was even faster. The test execution took only 3 seconds.

[TestClass]
public class HealthyDietMenuGeneratorTestsEdge
{
private IWebDriver driver;
private string serverPath = Microsoft Web Driver;
[TestInitialize]
public void SetupTest()
{
if (System.Environment.Is64BitOperatingSystem)
{
serverPath = Path.Combine(System.Environment.ExpandEnvironmentVariables(%ProgramFiles(x86)%), serverPath);
}
else
{
serverPath = Path.Combine(System.Environment.ExpandEnvironmentVariables(%ProgramFiles%), serverPath);
}
EdgeOptions options = new EdgeOptions();
options.PageLoadStrategy = EdgePageLoadStrategy.Eager;
this.driver = new EdgeDriver(serverPath, options);
//Set page load timeout to 5 seconds
this.driver.Manage().Timeouts().SetPageLoadTimeout(TimeSpan.FromSeconds(5));
}
[TestCleanup]
public void TeardownTest()
{
this.driver.Quit();
}
[TestMethod]
public void FillAwsomeDietTest_ThroughPageObjects()
{
HealthyDietGeneratorPage healthyDietGeneratorPage = new HealthyDietGeneratorPage(this.driver);
//this.Driver.Navigate().GoToUrl(healthyDietGeneratorPage.Url);
this.driver.Url = healthyDietGeneratorPage.Url;
healthyDietGeneratorPage.AddAdditionalSugarCheckbox.Click();
healthyDietGeneratorPage.VentiCoffeeRadioButton.Click();
//SelectElement selectElement = new SelectElement(healthyDietGeneratorPage.BurgersDropDown);
//selectElement.SelectByText(“7 x BBQ Ranch Burgers”);
healthyDietGeneratorPage.SmotheredChocolateCakeCheckbox.Click();
healthyDietGeneratorPage.AddSomethingToDietTextArea.SendKeys(@”Goi cuon- This snack made from pork, shrimp, herbs, rice vermicelli and other ingredients wrapped in rice paper is served at room temperature. It’s “meat light,” with the flavors of refreshing herbs erupting in your mouth.”);
//healthyDietGeneratorPage.RockStarRating.Click();
healthyDietGeneratorPage.FirstNameTextBox.SendKeys(Anton);
healthyDietGeneratorPage.LastNameTextBox.SendKeys(Angelov);
healthyDietGeneratorPage.EmailTextBox.SendKeys(aangelov@yahoo.com);
healthyDietGeneratorPage.AwsomeDietSubmitButton.Click();
}
}