In this blog on.Net Core, we shall discuss unit testing for user interface (UI). It is a topic very common, and we will see how to do it here.
Selenium is a software-testing framework, quite portable and for web applications and there is a .NET port of it. Here we shall use the Selenium.WebDriver package, and one or more of the following, for different browsers:
Selenium.Chrome.WebDriver: for Chrome
Selenium.Firefox.WebDriver: for Firefox
Selenium.WebDriver.MicrosoftWebDriver: for IE and Edge
Selenium gives a “minimum” contract that works over all the browsers.
Here let’s discuss some examples of how it works. Let’s start with instantiating a driver:
using (var driver = (IWebDriver) new ChromeDriver(Environment.CurrentDirectory))
Take note of the Environment.CurrentDirectory parameter; it marks the path where the driver can find a chromedriver.exe file, or geckodriver.exe for Firefox or MicrosoftWebDriver.exe, in case of IE/Edge. These executables get added automatically by the Nuget packages. If you don’t remove the driver, the window will remain open after the unit test finishes. You also have a choice to Quit at any time.
Let’s now navigate to some page:
And get some element from its name:
var elm = driver.FindElement(By.Name(“q”));
Besides the name, you can also search by:
CSS class: By.ClassName
CSS selector: By.CssSelector
Tag name: By.TagName
Link text: By.LinkText
Partial link text: By.PartialLinkText
Once an element is found, its properties can be accessed:
var attr = elm.GetAttribute(“class”);
var css = elm.GetCssValue(“display”);
var prop = elm.GetProperty(“enabled”);
Then we can send it text strokes:
Or click on it:
It is to be known that, page loading could take some time, so, you can configure the default time of waiting, before doing a GoToUrl:
var timeouts = driver.Manage().Timeouts();
timeouts.ImplicitWait = TimeSpan.FromSeconds(1);
timeouts.PageLoad = TimeSpan.FromSeconds(5);
ImplicitWait is only a time that Selenium awaits before searching an element.
If you have to wait for some period of time, like, till some AJAX request is done with, you can do the following:
var waitForElement = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
var logo = waitForElement.Until(ExpectedConditions.ElementIsVisible(By.Id(“hplogo”)));
The condition is passed on to ExpectedConditions could be one of:
You can see, there are several conditions that you can make use of. If the condition is not met and the timer expires, then the value returned is null.This is nice for your unit tests.
With this, we conclude.
If you want to enhance yourself in basics and concepts with Dot Net Course and improve yourself through Dot NET training program; our institute, CRBtech Solutions would be of great help and support. We give a well-structured program for the best Dot Net Course. Among several good institutes of dot net training and placement in Pune, CRBtech has created a niche for itself.