Hvad er Selenium? Introduktion Tutorial
⚡ Smart opsummering
Selenium er et gratis, open source-framework for automatiseret testning, der er designet til at validere webapplikationer på tværs af browsere og platforme ved hjælp af flere programmeringssprog. Det muliggør robust, effektiv og skalerbar testautomatisering til moderne QA-praksisser.

Hvad er Selenium?
Selenium er en gratis (open source) automatiseret testramme, der bruges til at validere webapplikationer på tværs af forskellige browsere og platforme. Du kan bruge flere programmeringssprog som f.eks Java, C#, Pythonosv. at oprette Selenium Test scripts. Test udført ved hjælp af Selenium testværktøj kaldes normalt Selenium Test.
Ekspertindsigt
"Undgå at bruge faste dvaleforsinkelser i dine tests. Brug i stedet eksplicitte ventetider (som WebDriverWait) til at vente på, at elementer indlæses. Dette gør dine scripts mere pålidelige og hurtigere, da de reagerer dynamisk på de faktiske sideforhold – en vigtig bedste praksis for studerende overalt, startende med Selenium".
👉 Tilmeld dig gratis live Selenium Test projekt
Selenium Tool Suite
Selenium Software er ikke bare et enkelt værktøj, men en suite af software, som hvert stykke henvender sig til forskelligt Selenium QA-testbehov i en organisation. Her er listen over værktøjer
- Selenium Integreret udviklingsmiljø (IDE)
- Selenium Fjernbetjening (RC)
- webdriver
- Selenium Grid
I øjeblikket, Selenium RC og WebDriver fusioneres til en enkelt ramme til dannelse Selenium 2. Selenium 1 i øvrigt henviser til Selenium RC.
Video Tutorial Selenium
Klik link. hvis videoen ikke er tilgængelig
Hvem udviklede Selenium?
Siden Selenium er en samling af forskellige værktøjer, den havde også forskellige udviklere. Nedenfor er de nøglepersoner, der har ydet bemærkelsesværdige bidrag til Selenium Projekt
Primært, Selenium var skabt af Jason Huggins i 2004Som ingeniør hos ThoughtWorks arbejdede han på en webapplikation, der krævede hyppig testning. Da han indså, at deres applikations gentagne manuelle testning blev mere og mere ineffektiv, skabte han en JavaScript program, der automatisk ville styre browserens handlinger. Han kaldte dette program for "JavaScriptTestRunner.
Han så potentialet i denne idé til at hjælpe med at automatisere andre webapplikationer JavaScriptRunner open source, som senere blev omdøbt Selenium Core. For dem, der er interesseret i at udforske andre muligheder for test af webapplikationer, så tag et kig på disse Selenium alternativer.
Problemet med samme oprindelsespolitik
Samme oprindelsespolitik forbyder JavaScriptkode fra adgang til elementer fra et domæne, der er forskelligt fra hvor det blev lanceret. For eksempel bruger HTML-koden i www.google.com en JavaScriptprogrammet “randomScript.js”. Den samme oprindelsespolitik tillader kun randomScript.js at få adgang til sider inden for google.com, såsom google.com/mail, google.com/login eller google.com/signup. Den kan dog ikke få adgang til sider fra forskellige websteder såsom yahoo.com/search eller guru99.com, fordi de tilhører forskellige domæner.
Dette er grunden til, at før Selenium RC, testere er nødvendige for at installere lokale kopier af begge Selenium Kerne (a JavaScriptprogram) og webserveren, der indeholder den webapplikation, der testes, så de ville tilhøre det samme domæne
Fødsel af Selenium Fjernbetjening (Selenium RC)
Desværre bruger testere Selenium Core var nødt til at installere hele applikationen under test og webserveren på deres egne lokale computere på grund af begrænsningerne pålagt af politik med samme oprindelseSå en anden ThoughtWorks-ingeniør, Paul Hammant, besluttede at oprette en server, der skulle fungere som en HTTP-proxy for at "narre" browseren til at tro, at Selenium Core og webapplikationen, der testes, kommer fra det samme domæne. Dette system blev kendt som Selenium Fjernstyrede vibratorer or Selenium 1.
Fødsel af Selenium Grid
Selenium Grid er udviklet af Patrick Lightbody at imødekomme behovet for at minimere testudførelsestider så meget som muligt. Han kaldte oprindeligt systemet "Hosted QA." Den var i stand til at tage browserskærmbilleder under vigtige faser, og også af sender ud Selenium kommandoer til forskellige maskiner samtidigt.
Fødsel af Selenium IDE
Shinya Kasatani af Japan skabt Selenium IDE, en Firefox og Chrome-udvidelse, der kan automatisere browseren via en optage- og afspilningsfunktion. Han fik denne idé for yderligere at øge hastigheden på oprettelsen af testcases. Han donerede Selenium IDE til Selenium Projekt i 2006.
WebDrivers fødsel
Simon Stewart oprettet WebDriver ca 2006 da browsere og webapplikationer blev mere kraftfulde og mere restriktive med JavaScript-programmer som Selenium Core. Det var det første testframework på tværs af platforme, der kunne styre browseren på OS-niveau.
Fødsel af Selenium 2
In 2008, Hele Selenium Team besluttede at fusionere WebDriver og Selenium RC til at danne et mere kraftfuldt værktøj kaldet Selenium 2, med WebDriver er kernen. I øjeblikket, Selenium RC er stadig under udvikling, men kun i vedligeholdelsestilstand. Det meste af Selenium Projektets indsats er nu fokuseret på Selenium 2.
Så hvorfor navnet Selenium?
Navnet Selenium kom fra en joke, som Jason lavede engang til sit hold. I løbet af Selenium's udvikling, en anden automatiseret test rammeværket blev populært lavet af virksomheden kaldet Mercury Interactive (ja, det firma der oprindeligt lavede QTP før det blev opkøbt af HP). Siden Selenium er en velkendt modgift mod Mercury forgiftning, foreslog Jason det navn, og hans holdkammerater tog det. Så det var sådan, vi fik kaldet denne ramme op til nutiden.
Hvad er Selenium IDE?
Selenium Integrated Development Environment (IDE) er enkleste rammer i Selenium suite og er den nemmeste at lære. Det er en Chrome og Firefox plugin som du kan installere så nemt som du kan med andre plugins. Men på grund af sin enkelhed, Selenium IDE bør kun bruges som en prototypeping værktøj. Hvis du vil oprette mere avancerede testcases, skal du bruge enten Selenium RC eller WebDriver.
Hvad er Selenium Fjernbetjening (Selenium RC)?
Selenium RC var flagskibstestramme af det hele Selenium projekt i lang tid. Dette er den første automatiserede webtest værktøj der giver brugerne mulighed for at bruge et programmeringssprog, de foretrækker. Fra version 2.25.0 kan RC understøtte følgende programmeringssprog:
Hvad er WebDriver?
WebDriveren viser sig at være bedre end Selenium IDE og Selenium RC i mange aspekter. Den implementerer en mere moderne og stabil tilgang til at automatisere browserens handlinger. WebDriver, i modsætning til Selenium RC, stoler ikke på JavaScript til Selenium Test af automatisering. Den styrer browseren ved at kommunikere direkte med den.
De understøttede sprog er de samme som dem i Selenium RC.
- Java
- C#
- PHP
- Python
- Perl
- Rubin
Hvad er Selenium Gitter?
Selenium Grid er et værktøj bruges sammen med Selenium RC at køre parallelle tests på tværs af forskellige maskiner og forskellige browsere på samme tid. Parallel udførelse betyder at køre flere test på én gang.
Funktioner:
- gør det muligt for samtidig afvikling af tests in flere browsere og miljøer.
- Sparer tid enormt.
- Bruger hub-og-noder koncept. Navet fungerer som en central kilde til Selenium kommandoer til hver knude, der er forbundet til den.
Selenium Browser og miljøsupport
På grund af deres arkitektoniske forskelle, Selenium SDI, Selenium RC og WebDriver understøtter forskellige sæt browsere og driftsmiljøer.
| Selenium IDE | webdriver | |
|---|---|---|
| Browser Support | Mozilla Firefox og Chrome | Google Chrome 12 + Firefox Internet Explorer 7+ og Edge Safari, HtmlUnit og PhantomUnit |
| Operating System | Windows, Mac OS X, Linux | Alle styresystemer, hvor ovenstående browsere kan køre. |
Bemærk: Opera Driveren virker ikke længere
Sådan vælger du det rigtige Selenium Værktøj til dine behov
| Værktøj | Hvorfor vælge? |
|---|---|
| Selenium IDE |
|
| Selenium RC |
|
| webdriver |
|
| Selenium Grid |
|
Real-World Case Studies
🔍 Casestudie 1: Kompatibilitet på tværs af browsere for SaaS-dashboard
Scenario
En software-as-a-service-virksomhed forberedte sig på at udgive et analysedashboard, der skulle fungere ensartet på tværs af moderne browsere (Chrome, Firefox, Edge, Safari).
Udfordring
Manuel testning på hver browser var tidskrævende, fejlbehæftet og kunne ikke holde trit med de hurtige udviklingsiterationer.
Løsning med Selenium
En QA-ingeniør oprettede en Selenium Grid opsætning til at udføre den samme testsuite samtidigt på tværs af flere browsere og OS-kombinationer. Testene blev udarbejdet i Python ved brug af Selenium WebDriver til handlinger som login, diagramfiltrering og dataeksport.
Resultat
- Reduceret regressionsvarighed med 80 %.
- Opdagede browserspecifikke renderingsfejl tidligt (f.eks. forkert justerede grafer i IE).
- Opretholdt en ensartet dashboard-brugeroplevelse på tværs af browsermatricen uden ekstra manuelle cyklusser.
⚙️ Casestudie 2: CI/CD-integration til webapp via Selenium + TestNG
Scenario
Et mellemstort webudviklingsfirma er afhængig af en CI/CD-pipeline ved hjælp af JenkinsDe skulle sikre, at de centrale brugerrejser fungerede efter hver kodeændring.
Udfordring
Nye build-implementeringer afbrød lejlighedsvis brugerflows – login, formularindsendelse – escaping detektion indtil manuel testning ved dagens afslutning.
Løsning med Selenium
En tester implementerede en Java-baseret Selenium WebDriver-suite integreret med TestNGTestene dækkede godkendelse, profilopdateringer og søgefunktioner. Disse kørte på alle Jenkins build, udnytter parallel udførelse og browserparametrisering.
Resultat
- Opnåede fejlfri feedback: afbrudte flows blev markeret med det samme.
- Reducerede fejl efter implementering med over 60 %.
- Gav udviklere mulighed for at løse problemer, før de nåede QA.
🚀 Casestudie 3: Acceleration af funktionsudgivelse til Travel Aggregator
Scenario
En rejseaggregatorplatform skulle udgive en opdateret flybookingfunktion. Manuelle regressionstests på tværs af over 10 sider tog dage og blokerede udgivelsen.
Udfordring
Presset for at reducere time-to-market kunne ikke overgå manuelle testcyklusser, hvilket ville medføre risiko for forsinkelser eller lavere kvalitet.
Løsning med Selenium & Sideobjektmodel
En QA-automatiseringsleder introducerede en Page Object Model (POM)-struktur i C#. Selenium WebDriver-scripts indkapslede sideelementer og handlinger (søgning efter flyvninger, anvendelse af filtre og betalingssager). Automatiserede testkørsler blev udløst hver nat på GitLab CI.
Resultat
- Testtiden faldt fra 3 dage til kun 4 timer.
- Genbrug af scripts på tværs af flere funktioner reducerer scriptindsatsen med 50 %.
- Tilliden øgedes: udgivelsen blev sendt til tiden med minimale fejlrapporter.
Fælles Selenium Udfordringer (og rettelser)
Selvom Selenium er kraftfuld, står testere ofte over for udfordringer, der kan påvirke pålidelighed og hastighed. Her er nogle almindelige udfordringer, og hvordan man løser dem:
- Ustabile tests:
Test kan mislykkes tilfældigt på grund af timing eller netværksproblemer.
Fix: Brug eksplicitte ventetider og stabile lokaliseringspunkter; undgåThread.sleep(). - Dynamiske webelementer:
Ændring af element-ID'er eller XPaths forårsager fejl af typen "element ikke fundet".
Fix: Brug relative XPaths, CSS-selektorer eller dynamisk attributhåndtering. - SyncProblemer med kronisering:
Elementer indlæses langsommere end scriptkørsel.
Fix: Implementer WebDriverWait med forventede betingelser. - Uoverensstemmelser på tværs af browsere:
Test opfører sig anderledes i Chrome, Firefox, eller Edge.
Fix: Kør tests på Selenium Grid- eller cloudplatforme til validering på tværs af browsere. - Håndtering af pop op-vinduer og advarsler:
Uventede pop op-vinduer kan afbryde testflowet.
Fix: Brug Selenium's Alert-grænseflade eller try-catch-blokke for at håndtere dem elegant. - Vedligeholdelsesomkostninger for test:
Hyppige ændringer i brugergrænsefladen gør tests skrøbelige.
Fix: Brug Page Object Model (POM) og versionskontrol for nemme opdateringer. - Integrationsudfordringer:
CI/CD-pipelines kan fejle på grund af driverproblemer.
Fix: Brug Selenium Manager (Selenium 4+) eller WebDriver Manager til automatisk administration af drivere.
Kort sagt: bro Selenium Problemer stammer fra dårlig synkronisering eller skrøbelige lokaliseringsanordninger – begge dele kan løses gennem smartere ventetider, modulært design og kontinuerlig vedligeholdelse.




.png)
.jpg)
.jpg)
.jpg)



