Geautomatiseerd browser testen met Selenium Webdriver

In dit artikel ga ik laten zien hoe je in Visual Studio geautomatiseerde testen kan schrijven door gebruik te maken van Selenium Webdriver.

Er zijn een aantal vereisten waar ten eerste aan voldaan moet worden, namelijk:

  1. Er moet een Webdriver (executable) voor de te gebruiken browser aanwezig zijn. In dit artikel ga ik uit van Google Chrome.
  2. Het pad (path) naar de executable moet zijn opgenomen in de ‘PATH’ systeemvariabele.

De Chrome webdrivers zijn hier te vinden:
http://chromedriver.storage.googleapis.com/index.html

Downloadt de laatste versie, pak deze uit en zet de .exe in een voor jou handige map. Zelf heb ik een aantal webrivers staan in: C:\Program Files (x86)\Microsoft Web Driver.

3-webdriver

Nu de Webdriver is gedownload, moet het pad hierheen worden toegevoegd aan de ‘Path’ systeem variabele. In Windows 8.x en 10 kun je dat doen door middel van de Win Key + X sneltoets, dan te kiezen voor Systeem (System) en vervolgens in het scherm dat is geopend klikken op ‘Geavanceerde systeeminstellingen’ (Advanced system settings). Klik vervolgens op de knop ‘Omgevingsvariabelen’ (Environment variables) en zoek dan ‘Path’ op tussen de systeemvariabelen en bewerk deze vervolgens als volgt:

4-path

Zoals je ziet heb ik een nieuwe variabele toegevoegd.
Klik op ‘OK’ en nogmaals op ‘OK’ en sluit als het laatste het configuratiescherm.

Oke, we kunnen nu aan de slag in Visual Studio.

Open Visual Studio (ik ga uit van 2015) als je dat nog niet hebt gedaan en start een nieuw Console project:

1-nieuw-project

Open vervolgens de Nuget Package Manager en zoek naar ‘selenium.webdriver’ en installeer vervolgens de laatste versie. Op dit moment is dat 2.53.0.

2-nuget

Voeg vervolgens de volgende ‘usings’ toe aan Program.cs:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;

En vervolgens de volgende code aan de ‘Main’ method:

RemoteWebDriver driver = null;
try
{
	driver = new ChromeDriver();

	// Ga naar google.nl
	driver.Navigate().GoToUrl("https://www.google.nl");

	// Zoek input box (q)
	var searchBox = driver.FindElement(By.Name("q"));
	searchBox.SendKeys(".net");

	// Screenshot maken
	var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
	screenshot.SaveAsFile(@"ScreenShot1.png", ImageFormat.Png);

	// Zoeken
	searchBox.SendKeys(Keys.Enter);

        // Hou de browser open
	Console.ReadLine();

}
catch (Exception e)
{
	Console.WriteLine(e.Message);
}
finally
{
	driver?.Quit();
}

Voer het project vervolgens uit.

Als alles goed gaat wordt er een nieuw Chrome venster geopend, wordt er vervolgens genavigeerd naar https://www.google.nl. Dan wordt er ‘.net’ ingetypt in het zoekvenster (q). Vervolgens wordt er een screenshot van het browservenster gemaakt en daarna wordt er op de Enter toets gedrukt zodat er wordt gegoogeld naar ‘.net’.

Resultaat:

5-result

Voor de volledigheid staat hieronder de volledige code van Main.cs:

using System;
using System.Drawing.Imaging;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Remote;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            RemoteWebDriver driver = null;
            try
            {
                driver = new ChromeDriver();

                // Ga naar google.nl
                driver.Navigate().GoToUrl("https://www.google.nl");

                // Zoek input box (q)
                var searchBox = driver.FindElement(By.Name("q"));
                searchBox.SendKeys(".net");

                // Screenshot maken
                var screenshot = ((ITakesScreenshot)driver).GetScreenshot();
                screenshot.SaveAsFile(@"ScreenShot1.png", ImageFormat.Png);

                // Zoeken
                searchBox.SendKeys(Keys.Enter);

                Console.ReadLine();

            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                driver?.Quit();
            }
        }
    }
}

Dit was in het kort een beschrijving van het gebruik van Selenium Webdriver met C#.

Meer info:
http://www.seleniumhq.org/projects/webdriver/
https://github.com/SeleniumHQ/selenium/tree/master/dotnet