Selenium C# Tutorial med NUnit Eksempel
Selenium Oversigt
Selenium er en open source, web Test af automatisering værktøj, der understøtter flere browsere og flere operativsystemer. Det giver testere mulighed for at bruge flere programmeringssprog som f.eks Java, C#, Python, .Net, Ruby, PHP og Perl til kodning af automatiserede tests.
C# Oversigt
C# er et objektorienteret programmeringssprog afledt af C++ og Java. C# giver udviklere mulighed for at bygge applikationer ved hjælp af Visual Studio på .Net-platformen. Følgende er de vigtigste funktioner i C#.
- Det er et objektorienteret programmeringssprog
- Det understøtter udvikling af konsoller, vinduer og webbaserede applikationer
- Det giver funktioner såsom indkapsling, arv og polymorfi.
Grundlæggende syntaks for C#
Et program i C# skal indeholde følgende sektioner
- Navneområdeerklæring
- Klasser
- Klasseattributter og metoder
- Hovedmetode
- Programerklæringer
Eksempel-
Nedenfor er et eksempel Selenium C# eksempelprogram til at udskrive teksten 'Guru99' på systemkonsollen.
using System; namespace FirstProgram { class DemoPrint { static void main(){ Console.WriteLine("Guru99"); } } }
Forklaring:
- Et navneområde i ovenstående Selenium C# eksempel er en samling af flere klasser. Hvert navneområde skal deklareres ved hjælp af nøgleordet 'bruger'.
- Den første sætning af koden inkluderer navneområdet 'System' i vores program. Systemnavneområdet definerer de grundlæggende klasser og hændelser, der bruges i C#. Det navneområde, der skal bruges, afhænger af programkravet.
- Den anden sætning er at erklære et navneområde "FirstProgram" for klassen "DemoPrint." AC#-filen kan indeholde flere klasser inden for det samme navneområde.
- Den tredje erklæring omfatter klasseerklæringen. En klasse kan indeholde flere attributter og flere metoder.
- Den fjerde erklæring indeholder en erklæring om hovedmetoden. Hovedmetoden er indgangspunktet for udførelse for hver klasse.
- Den sidste sætning er C#-syntaksen, der bruges til at udskrive en sætning til konsollen. WriteLine er en metode af klassen 'Console.
Selenium med C#-opsætning
Sådan opsætter du Visual Studio med Selenium WebDriver:
Nu i dette Selenium C# tutorial, lad os lære trin for trin processen at konfigurere Visual Studio med Selenium WebDriver:
Visual Studio er et integreret udviklingsmiljø (IDE), der bruges af udviklere til at bygge applikationer på tværs af flere platforme som f.eks. Windows, Android, iOS og Cloud-baserede applikationer.
Trin 1) Naviger til URL'en
https://visualstudio.microsoft.com/downloads/ og klik på 'Gratis download' knappen vist på Visual Studio Community-fanen
Trin 2) Åbn den downloadede exe. Klik på 'Ja', hvis du bliver bedt om administratorrettigheder.
Trin 3) Nedenstående popup vises. Klik på knappen 'Fortsæt'.
Filer vil blive downloadet som vist i pop op-vinduet nedenfor.
Trin 4) På næste skærmbillede
Marker afkrydsningsfelterne for
- Universal Windows Udvikling af platforme
- .Net desktop udvikling
Klik på 'Installer'.
Vent på, at installationen af hver komponent er fuldført. Filer er 16 GB store og vil tage tid.
Trin 5) Nedenstående pop op vil blive vist. Klik på knappen 'Genstart'.
Trin 6) Når maskinen er genstartet, søg efter "Visual Studio" i startmenuen og klik på søgeresultatet. Følgende popup vises. Klik på linket "Ikke nu, måske senere", hvis du ikke har en eksisterende konto.
Trin 7) På næste skærmbillede
- Vælg farvetema efter din smag
- Klik på knappen "Start Visual Studio"
Trin 8) Visual Studio 'Kom i gang'-skærmen vises.
Opret et nyt projekt i Visual Studio:
Trin 1) Klik på Ny > Projekt i menuen Filer
Trin 2) På næste skærmbillede
- Vælg indstillingen 'Visuel C#'
- Klik på Console App (.Net Framework)
- Indtast navn som "Guru99"
- klik på OK
Trin 3) Skærmbilledet nedenfor vil blive vist, når projektet er oprettet.
Konfigurer Visual Studio med Selenium WebDriver:
Trin 1) Naviger til Værktøjer -> NuGet Pakkeadministrator -> Administrer NuGet Pakker til løsning
Trin 2) I næste skærmbillede
- Søg efter Selenium på den resulterende skærm
- Vælg det første søgeresultat
- Marker afkrydsningsfeltet projekt
- Klik på 'Installer'
Trin 3) Klik på 'OK' knappen i pop op-skærmen
Trin 4) Nedenstående meddelelse vil blive vist, når pakken er installeret.
NUnit Framework: Oversigt
NUnit er Enhedstest framework understøttet af Visual Studio og Selenium WebDriver. NUnit er den mest udbredte enhedstestramme til .Net-applikationer. NUnit præsenterer testresultaterne i et læsbart format og giver en tester mulighed for at fejlsøge de automatiserede tests.
Vi skal installere NUnit Framework og NUnit Test Adapter på Visual Studio for at kunne bruge det.
Trin til at installere NUnit Framework
Nu i dette Selenium med C# tutorial, lad os lære processen til at installere NUnit framework:
Trin 1) Naviger til Værktøjer -> NuGet Pakkeadministrator -> Administrer NuGet Pakker til løsning
Trin 2) I det næste vindue
- Søg efter NUnit
- Vælg søgeresultatet
- Vælg Projekt
- Klik på Installer
Trin 3) Nedenstående popup vises. Klik på knappen 'Ok'.
Trin 4) Nedenstående meddelelse vises, når installationen er fuldført.
Trin til download af NUnit Test Adapter
Nu i denne NUnit-tutorial vil vi dække trinene for at downloade NUnit Test Adapter:
Bemærk venligst, at nedenstående trin kun virker for 32-bit maskiner. For 64-bit maskiner skal du downloade 'NUnit3 Test Adapter' ved at følge samme proces som nævnt nedenfor.
Trin 1) Naviger til Værktøjer ->NuGet Pakkeadministrator -> Administrer NuGet Pakker til løsning. På den skærm
- Søg i NUnitTestAdapter
- Klik på Søgeresultat
- Vælg Projekt
- Klik på Installer
Trin 2) Klik på OK på pop op-vinduet til bekræftelse. Når installationen er færdig, vil du se følgende besked-
Selenium og NUnit-ramme
Integration af selen med NUnit-ramme giver en tester mulighed for at skelne mellem forskellige testklasser. NUnit giver også testere mulighed for at bruge annoteringer såsom SetUp, Test og TearDown til at udføre handlinger før og efter at have kørt testen.
NUnit framework kan integreres med Selenium ved at oprette en NUnit testklasse og køre testklassen ved hjælp af NUnit framework.
Nedenstående trin i dette Selenium C# framework tutorial er nødvendig for at oprette og køre en test klasse ved hjælp af NUnit framework.
Trin til at oprette en NUnit Test-klasse i Selenium:
Trin 1) Højreklik på projekt > Tilføj > Klasse i Solution Explorer
Trin 2) Et vindue til oprettelse af klasse vises.
- Giv klassen et navn
- Klik på knappen Tilføj
Trin 3) Nedenstående skærmbillede vises.
Trin 4) Tilføj følgende kode til den oprettede klasse. Bemærk venligst, at du skal angive placeringen af 'chromdriver.exe'-filen under initialisering af chrome-driveren.
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Firefox; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class Guru99Demo { IWebDriver driver; [SetUp] public void startBrowser() { driver = new ChromeDriver("D:\\3rdparty\\chrome"); } [Test] public void test() { driver.Url = "http://www.google.co.in"; } [TearDown] public void closeBrowser() { driver.Close(); } } }
Trin 4) Klik på 'Byg' -> 'Byg løsning'
BEMÆRK VENLIGST: Du får muligvis en fejl som "Indeholder ikke en statisk 'hoved'-metode, der er egnet til et indgangspunkt", når du bygger
For at løse dette Gå til Projekt > Egenskaber og skift outputtype til "Klassebibliotek." Standard er "Konsolapplikation."
Trin 5) Når opbygningen er vellykket, skal vi åbne vinduet Test Explorer. Klik på Test -> Windows -> Test Explorer
Trin 6) Vinduet Test Explorer åbnes med listen over tilgængelige tests. Højreklik på Test Explorer og vælg Kør valgte tests
Trin 7) Selenium skal åbne browseren med specificeret URL og lukke browseren. Testtilfældestatus vil blive ændret til 'Bestået' i Test Explorer-vinduet.
Selenium WebDriver-kommandoer i C#
C# bruger grænsefladen 'IWebDriver' til browserinteraktioner. Følgende er kategorien af kommandoer, der er tilgængelige med Selenium i C#.
- Browser kommandoer
- Webelement-kommandoer
- Dropdown-kommandoer
Nu i Selenium C Sharp tutorial, lad os studere Selenium WebDriver-kommandoer én efter én
Browserkommandoer:
Følgende er en liste over browserkommandoer tilgængelige i C# med Selenium.
Kommandoenavn | Description | Syntaks |
---|---|---|
URL-kommando | Denne kommando bruges til at åbne en specificeret URL i browseren. |
driver.Url = "https://www.guru99.com" |
Titel kommando | Denne kommando bruges til at hente sidetitlen på den webside, der i øjeblikket er åben |
String title = driver.Title |
Sidekilde-kommando | Denne kommando bruges til at hente kildekoden til den webside, der i øjeblikket er åben. |
String pageSource = driver.PageSource |
Luk kommando | Denne kommando bruges til at lukke den nyligt åbnede browserinstans. |
driver.Close(); |
Afslut kommando | Denne kommando bruges til at lukke alle åbne browserforekomster |
driver.Quit(); |
Tilbage kommando | Denne kommando bruges til at navigere til den forrige side i browserhistorikken. |
driver.Navigate().Back(); |
Fremadgående kommando | Denne kommando bruges til at navigere til den næste side i browserhistorikken. |
driver.Navigate().Forward() |
Opdater kommando | Denne kommando bruges til at udføre browseropdatering. |
driver.Navigate().Refresh() |
Webelement kommandoer
Et webelement repræsenterer alle elementerne på en webside. De er repræsenteret af HTML-tags. Hver af knapperne, tekstboksene, links, billeder, tabeller og rammer falder ind under Webelements. Operationer på webelementer kan udløses ved hjælp af IWebelement-grænsefladen. For at interagere med et webelement skal vi finde elementet på websiden og derefter udføre operationer på det. Værktøjer som Firebug og Firepath kan bruges til at identificere Xpath af Webelement.
Følgende er listen over Webelement-kommandoer, der er tilgængelige i C#.
Kommandoenavn | Description | Syntaks |
---|---|---|
Klik på kommando | Denne kommando bruges til at klikke på et webelement. For at elementet kan klikkes, skal elementet være synligt på websiden. Denne kommando bruges også til betjening af afkrydsningsfelter og alternativknapper. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.Click(); |
Ryd kommando | Denne kommando bruges specifikt til at rydde det eksisterende indhold af tekstbokse. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.Clear(); |
SendKeys kommando | Denne kommando bruges til at indtaste en værdi i tekstbokse. Værdien, der skal indtastes, skal videregives som en parameter til |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.SendKeys("guru99"); |
Vist kommando | Denne kommando bruges til at identificere, om et bestemt element vises på websiden. Denne kommando returnerer en boolsk værdi; sand eller falsk afhængigt af webelementets synlighed. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Displayed; |
Aktiveret kommando | Denne kommando bruges til at identificere, om et bestemt webelement er aktiveret på websiden. Denne kommando returnerer en boolsk værdi; sandt eller falsk som resultat. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Enabled; |
Valgt kommando | Denne kommando bruges til at identificere, om et bestemt webelement er valgt. Denne kommando bruges til afkrydsningsfelter, alternativknapper og valghandlinger. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); Boolean status = element.Selected; |
Send kommando: | Denne kommando ligner klikkommando. Forskellen ligger i om HTML-formularen har en knap med typen Send. Mens klikkommandoen klikker på en hvilken som helst knap, indsend kommando klik på de eneste knapper med typen submit. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); element.submit(); |
Tekstkommando | Denne kommando returnerer den indre tekst af et webelement. Denne kommando returnerer en strengværdi som et resultat. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String text=element.Text; |
TagName kommando | Denne kommando returnerer HTML-tagget for et webelement. Det returnerer en strengværdi som resultatet. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String tagName = element.TagName; |
GetCSSValue kommando: | Denne metode bruges til at returnere farven på et webelement i form af en rgba-streng (rød, grøn, blå og alfa). |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); String color = element.getCSSValue; Produktion– Hvis farven på elementet er rød, vil output være rgba(255,0,0,1) |
Dropdown-kommandoer:
Dropdown-operationer i C# kan opnås ved hjælp af SelectElement-klassen.
Følgende er de forskellige dropdown-handlinger, der er tilgængelige i C#.
Kommandoenavn | Description | Syntaks |
---|---|---|
SelectByText-kommando | Denne kommando vælger en mulighed for en rullemenu baseret på teksten i indstillingen. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByText("Guru99"); |
SelectByIndex-kommando | Denne kommando bruges til at vælge en indstilling baseret på dens indeks. Indeks for dropdown starter ved 0. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByIndex("4"); |
SelectByValue Command | Denne kommando bruges til at vælge en indstilling baseret på dens indstillingsværdi. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.SelectByValue("Guru99"); |
Indstillinger Kommando | Denne kommando bruges til at hente listen over muligheder, der vises i en rullemenu. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); List<IWebelement> options = select. Options; int size = options.Count; for(int i=0;i<options.size();i++) { String value = size.elementAt(i).Text; Console.writeLine(value); } Ovenstående kode udskriver alle mulighederne på konsollen i en rullemenu. |
IsMultiple kommando | Denne kommando bruges til at identificere, om en dropdown er en multi select dropdown; En rullemenu med flere valg gør det muligt for brugeren at vælge mere end én mulighed i en rullemenu ad gangen. Denne kommando returnerer en boolsk værdi. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); Boolean status = select.IsMultiple(); |
Kommandoen DeSelectAll | Denne kommando bruges i rullemenuer med flere valg. Det rydder de indstillinger, der allerede er valgt. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectAll(); |
DeSelectByIndex kommando | Denne kommando fravælger en allerede valgt værdi ved hjælp af dens indeks. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByIndex("4"); |
DeSelectByValue kommando | Denne kommando fravælger en allerede valgt værdi ved hjælp af dens værdi. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByValue("Guru99"); |
DeSelectByText kommando | Denne kommando fravælger en allerede valgt værdi ved hjælp af dens tekst. |
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); SelectElement select = new SelectElement(element); select.DeSelectByText("Guru99"); |
Kodeprøver
Eksempel 1: Klik på et link ved hjælp af XPATH Locator:
Testscenarie:
- Naviger til Demo Guru99 webside – https://demo.guru99.com/test/guru99home/
- Maksimer vinduet
- Klik på menuen 'Test'
- Luk browseren
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("D:\\3rdparty\\chrome"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebelement link = m_driver.FindElement(By.XPath(".//*[@id='rt-header']//div[2]/div/ul/li[2]/a")); link.Click(); m_driver.Close(); } } }
Eksempel 2: Indtastning af data i tekstBox og klik på en knap ved hjælp af XPATH locator:
Testscenarie:
- Naviger til Guru 99 demo side – https://demo.guru99.com/test/guru99home/
- Indtast data i e-mail-tekstboksen
- Klik på tilmeld-knappen
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-email']")); IWebElement signUpButton = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-submit']")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
Eksempel 3: Indtastning af data i tekstBox og klik på en knap ved hjælp af CSS-locator:
Testscenarie:
- Naviger til Guru 99 demo side – https://demo.guru99.com/test/guru99home/
- Indtast data i e-mail-tekstboksen
- Klik på tilmeld-knappen
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Guru99Demo { class CSS { IWebDriver m_driver; [Test] public void cssDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); // Store locator values of email text box and sign up button IWebElement emailTextBox = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-email]")); IWebElement signUpButton = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-submit]")); emailTextBox.SendKeys("test123@gmail.com"); signUpButton.Click(); } } }
Eksempel 4: Vælg en værdi i rullemenuen:
Testscenarie:
- Naviger til Guru 99 demo side – https://demo.guru99.com/test/guru99home/
- Klik på SAP link
- Indtast data i navne- og e-mail-tekstfelter
- Vælg en værdi fra rullemenuen Kursus
- Luk browseren
using NUnit.Framework; using OpenQA.Selenium; using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Support.UI; namespace Guru99Demo { class TestSelect { IWebDriver m_driver; [Test] public void selectDemo() { m_driver = new ChromeDriver("G:\\"); m_driver.Url = "https://demo.guru99.com/test/guru99home/"; m_driver.Manage().Window.Maximize(); IWebElement course = m_driver.FindElement(By.XPath(".//*[@id='awf_field-91977689']")); var selectTest = new SelectElement(course); // Select a value from the dropdown selectTest.SelectByValue("sap-abap"); } } }
Resumé
- For at kunne bruge Selenium WebDriver med C#, du skal installere Visual Studio.
- NUnit er Unit Testing frameworket understøttet af Visual Studio og Selenium webdriver
- Vi skal installere NUnit Framework og NUnit Test Adapter på Visual Studio for at kunne bruge det.
- NUnit framework kan integreres med Selenium ved at oprette en NUnit testklasse og køre testklassen ved hjælp af NUnit framework.
- NUnit giver også testere mulighed for at bruge annoteringer såsom SetUp, Test og TearDown til at udføre handlinger før og efter at have kørt testen.
- Selenium WebDriver-kommandoer kan kategoriseres i browserkommandoer, webelementkommandoer og dropdown-kommandoer.