Testautomation för WebApplikationer – Selenium
Skrivet av:
Paul Arcombe,
Certified ISTQB Foundation SoftwareTester,
Örestad-Linux, Malmö
Projektet går ut på att
- Undersöka vad Selenium kan erbjuda inom automatiserad test av webapplikationer.
- Installera och sätta upp Selenium.
- Bygga och slutligen använda enskilda tester med hjälp av Selenium.
- Att sätta upp och få igång en fungerande testmiljö bestående av Selenium, Java och JUnit
- BASICS: Hur man använder testsviter/multipla test från Selenium m.h.a. Java och JUnit.
- ADVANCED (I): Skriva/modifiera skript m.h.a. skriptspråket Selenese.
- ADVANCED (II): Loggar, Test sammanfattningar och Test rapporter
Projektet är avsett att uppdateras en gång per vecka, med start 091116. Avslutat 091231.
KAPITEL 4: Att sätta upp och få igång en fungerande testmiljö bestående av Selenium, Java och JUnit
I detta kapitel skall vi gå igenom steg-för-steg om hur man sätter upp en Selenium RC miljö med JUnit. Slutligen skapar vi ett test i Java som vi kör för att verifierar att systemet fungerar.
Vad är Selenium RC?
Selenium Remote Control är ett verktyg som ger oss möjlighet att konvertera och/eller vidareutveckla våra Selenium tester i valfritt programmeringsspråk, och slutligen köra testerna (i t.ex. Java…) genom vår webbläsare.
Hur fungerar Selenium RC?
Selenium Remote Control är beroende av en server –Selenium Server. Denna server manipulerar supportade webbläsare och fungerar som en klient-konfigurerad proxy mellan en webbläsare och en webbsite. Detta ger tillgång till att köra JavaSkript mot en webbsite.
INSTALLERA SELENIUM RC OCH JUNIT
Först och främst behöver vi ladda ner de installationsfiler som krävs för att sätta upp en fungerande miljö för Selenium och JUnit.
Tidigare i Kapitel 2 laddade du ned och installerade:
- FireFox webbläsare
http://www.mozilla.com/en-US/firefox/all.html
- Selenium IDE
Ladda ner från FireFox add ons hemsida:
https://addons.mozilla.org/sv-SE/firefox/user/5338
eller ladda ner från en av Seleniums hemsidor:
http://seleniumhq.org/projects/ide
http://seleniumhq.org/download
Vidare så kompletterade du PATH och lade till en ny miljövariabel: CLASSPATH.
Nu är det dags för en sista komplettering. Följande tilläggsprogram krävs för att du skall kunna gå vidare i detta kapitel (ladda ner senaste versionen):
- Selenium RC – du kan ladda ner denna från: https://sourceforge.net/projects/selenium-rc/
- Junit – du kan ladda ner denna från: https://sourceforge.net/projects/junit/files/junit/ - välj junit4.7.zip
Vidare så måste CLASSPATH kompletteras med de nya tilläggsprogrammen.
- Ladda ner och installera Selenium RC från ovanstående länk
Packa upp (unzip) Selenium RC filen och spara på t.ex. följande plats: C:\selenium-remote-control-1.0.1\. Öppna upp katalogen du sparade filerna i och du kommer att se följande kataloger:
- selenium-dotnet-client-driver-1.0.1
- selenium-java-client-driver-1.0.1
- selenium-perl-client-driver-1.0.1
- selenium-php-client-driver-1.0.1
- selenium-python-client-driver-1.0.1
- selenium-ruby-client-driver-1.0.1
- selenium-server-1.0.1
Vi kommer att behöva selenium-java-client-driver-1.0.1 och selenium-server-1.0.1 för att köra Selenium RC applikationer i Java.
- Ladda ner och installera JUnit från ovanstående länk.
Packa upp (unzip) JUnit filen och spara på t.ex. följande plats: C:\junit\.
I denna katalog kommer du att finna katalogen C:\junit\junit4.7\ under vilken alla JUnit filerna finns.
DEFINIERA MILJÖVARIABLER I WINDOWS XP
Efter installation av Selenium RC och JUnit, kontrollerar du att miljövariablerna är korrekt definierade.
- Modifiera PATH (användarvariabel);
Redigera “PATH” så den även inkluderar din testkatalog:
+ C:\selenium\tests
- Modifiera CLASSPATH (användarvariabel)
Redigera miljövariabeln ”CLASSPATH” så den även innefattar de nya programmen:
+ selenium-java-client-driver.jar;
+ selenium-server.jar;
+ jdk1.6.0_17\bin\javac.exe;
+ jdk1.6.0_17\lib\tools.jar;
+ junit4.7\junit-4.7.jar;
——————————————————————–
För att kontrollera miljövariablerna, tag fram kommandoprompten (Start – Kör – skriv:cmd => kommandopromptfönstret) och skriv följande:
echo %CLASSPATH%
echo %PATH% or just write the commando PATH
Du bör få en utskrift som är något i stil med detta:
Nu har du installerat all mjukvara som krävs för att kunna gå vidare och konvertera Selenium testfall till Javakod, modifiera dem och slutligen köra de genom Selenium RC och din webbläsare.
Starta Selenium RC-Server:
Vi måste kunna starta och stoppa Selenium servern. Detta kan t.ex. göras från en genväg eller direkt från kommandoraden:
Start:
java -jar selenium-server.jar
Stop:
http://localhost:4444/selenium-server/driver/?cmd=shutDown
För att begränsa konfigurerings- och externa beroenden, kan man lägga in detta i koden genom att använda sig av Selenium Server class:
SeleniumServer server = new SeleniumServer();
server.start();
…
server.stop();
I vårt fall väljer vi den smidigaste varianten, dvs skapar en genväg på skrivbordet som startar servern:
Skapa en genväg, på skrivbordet, med följande konfiguration:
Name: Start Selenium RC Server
Filetype: Shortcut
Place: C:\Documents and Settings\”User”\Skrivbord
Target: java -jar selenium-server.jar
Om du har mjukvaran installerad på olika partitioner/hårddiskar med format NTFS, får du skriva ett batch script som fixar övergången mellan partitionerna (annars får DOS emulatorn svårt att hitta rätt path). Om du t.ex har servern på en D:\ disk, och vill köra från en genväg på Skrivbordet,(C:\ disk) får du köra via ett batch script. Exempel på en sådan uppsättning får du här:
- Skapa en batchfil på D:\Batch\promt.bat enligt följande:
@echo ==========================================================
@echo = This is the startup for Selenium Server RC ver. 1.0.1 =
@echo ==========================================================
@echo.
@echo – To continue and start the server, press any key.
@echo - To shut down the server, press the Ctrl and C buttons (at the same time..)
@echo – The current java version run on this system is:
@echo.
@java -version
@echo.
@echo ———————————————————-
@pause
@echo.
@cd D:\selenium-remote-control-1.0.1\selenium-server-1.0.1
@java -jar selenium-server.jar -log selenium.log
@pause
Det aktiva kommandot är java -jar selenium-server.jar -log selenium.log .Detta gör följande:
* Startar servern
* Skriver ut från loggen vad som händer initialt, så du ser om något konstigt inträffar.
Skapa länken (shortcut) på skrivbordet:
* Högerklicka på skrivbordet – I popupmenyn, välj: Nytt och sedan Genväg
* Följ den wizard som poppar upp (eller gå in i länkens “egenskaper” och editera direkt) och fyll i följande:
Name: Start Selenium RC Server
Target: D:\Batch\prompt.bat
Filetype: Shortcut
Place: C:\Documents and Settings\Paul\Skrivbord
Start in: D:\Batch
Det är lite jobbigare att initialt skapa länk via batch script, men när man väl gjort det en gång, är det sedan lätt att modifiera skriptet efter tycke och behag beroende på vilken info man vill få utskriven efterhand som servern kör….
Starta Selenium RC Server genom att klicka på din nya genväg så bör du få upp ett kommandofönster med liknande info (sista 2 raderna får du när du stoppar servern):
Nu när du har servern uppe, kan du börja använda klienten.
Starta Selenium IDE och öppna ditt testfall från föregående kapitel:
Öppna upp ett nytt FireFox fönster,
Starta Selenium meny – Verktyg – Selenium IDE:
Du har nu två vägar att gå:
- Antingen återskapar du samma skript igen, som du gjorde i föregående Kapitel 3, WIKI-SEARCH.html (Detta är att rekommendera om du är ny, osäker eller känner att en repetition är på sin plats.).
- Eller så öppnar du bara upp föregående skript helt enkelt (den otåliges val.).
<Gå till Selenium IDE Meny List
<Välj Arkiv – Open
<Navigera till din testkatalog C:\selenium\tests
<Öppna testfalls filen ”WIKI-SEARCH.html”
<Stäng av inspelning genom att trycka på inspelningsknappen: .
Hur du än väljer att göra det , så skall du i alla fall nu ha Selenium IDE öppnat med koden från föregående skript laddat enligt följande:

Exportera Testfallet som Java(JUnit) program.
Testfallet ligger nu laddat i Selenium IDE. Här ligger det som HTML kod. Med hjälp av Selenium RC och JUnit skall vi nu först konvertera HTML koden till ett default Java paket, och sedan anpassa detta till ett körbart javaprogram.
- Exportera:
Exportera testfallet och spara som Java(Junit) – Selenium RC
File-> Export Test Case as..-> Java (Junit) – Selenium RC
- Spara:
Spara filen som WIKI-SEARCH.java i din testkatalog c:\selenium\tests
Titta på javakoden:
Gå till c:\selenium\tests folder
Här ser du WIKI-SEARCH.java filen.
Din WIKI-SEARCH.java fil borde se ut så här;
Koden är skriven som generic code och måste modifieras för att kunna kompileras och köras. Man har 2 vägar att gå :
- Modifiera till ett enskillt paket, som skall ingå I en större testsvit med multipel testkörning.
- Modifiera till ett eget standalone program
Vi väljer alternativ 2) för att enkelt kunna gå vidare, utan att villa bort oss I Javafinesser på denna enkla nivå. Redigera koden och döp om filen så den blir kompilerbar (t.ex. WikiSearch.java):
Kompilera och kör filen:
1) Kompilera java-filen
- Gå till testkatalogen: “cd C:\Selenium\tests”
- Skriv kommandot“javac WikiSearch.java”
2) Starta Selenium RC Server
- Starta upp ett nytt FireFox fönster (annars får du server error),
- Dblklicka på ikonen på skrivbordet. => servern startar upp, och ligger standby.
3) Kör TC
- Öppna upp ett kommandofönster: Start – Kör – Skriv in “cmd”
- Gå till testkatalogen: “cd C:\Selenium\tests”
- Skriv kommandot“java WikiSearch.”
4) Testet startar och
- FireFox fönster öppnas för Selenium IDE och den URL som testet körs på.
- I dessa fönster ser du hur testets olika kommando exekveras och fortskrider tills testet avslutas och
- webbläsarfönsterna stängs ned.
- När JUnit testet körts färdigt får du som slutresultat en utskrift till kommandoprompten (se bild ovan)
- att testet tog en viss tid ( Time:32,89 ),
- att det körts ett visst antal test och
- om de är godkända eller ej ( OK (1 test) ).
Utskrift av loggen I Selenium RC Server kommandofönster ger dig detaljerad information om hur testet kördes. Denna info är bra att ha tillgänglig, på enkelt sätt, om verifieringen får negativt utfall I en framtida regressionstest.
I kommandofönsterna ser du följande:
- Selenium RC Server: alla händelser som loggas skrivs ut I kommandofönstret efterhand som testet fortskrider och du får en massa meddelanden I den här stilen:
Det börjar med att sätta upp en session:
- - Command request: getNewBrowserSession…
- creating new remote session…
- Allocated session…
- Preparing Firefox profile…
- Launching Firefox…
- Command request: setTimeout[1000000, ] on session…
- Command request: open[/firefox?client=firefox-a&rls=org.mozilla:sv-SE:official, ] on session…
- Checking Resource aliases…
Sedan öppnas webbrowsern för testet:
- …Launching Firefox…
…Preparing Firefox profile…
Sedan får du en massa requests och confirmations efterhand som testet körs:
- …Command request…
…Got result: OK on session…
Slutligen avslutas sessionen med att stänga webbrowsern:
- …Killing Firefox…
Du har nu gått igenom steg-för-steg om hur man sätter upp en Selenium RC miljö med JUnit.
Du har lärt dig hur man konverterar ett Selenium IDE test till javakod.
Du har tittat på hur man modifierar och skapar ett standalone test av konverterad Javakod.
Du har kört ditt modifierade javatest för att verifiera att systemet fungerar.
Du har kontrollerat att JUnit testningen fungerar.
Du har fått en inblick i att granska en testkörning.
Du är nu klar att gå vidare till nästa kapitel.
