februar 6, 2022

Sådan finder du brudte links i selen

Indholdsfortegnelse

før vi diskuterer, hvordan man finder brudte links ved hjælp af selen, lad os tage et mere grundlæggende spørgsmål.

Hvad er brudte Links?

til at begynde med er et link et HTML-objekt, der gør det muligt for brugere at migrere fra en hjemmeside til en anden, når de klikker på den. Det er et middel til at navigere mellem forskellige hjemmesider på internettet.

et brudt link, også ofte kaldet et dødt link, er et, der ikke fungerer, dvs. omdirigerer ikke til den hjemmeside, den er beregnet til. Dette sker normalt, fordi hjemmesiden eller en bestemt hjemmeside er nede eller ikke findes. Når nogen klikker på et brudt link, vises en fejlmeddelelse.

brudte links kan eksistere på grund af en slags serverfejl, hvilket igen får den tilsvarende side til at fungere og ikke vises. En gyldig URL vil have en HTTP-statuskode på 2 gange. Ødelagte links, som i det væsentlige er ugyldige HTTP-anmodninger, har 4H og 5h status koder.

statuskoden på 4% henviser til en klientside-fejl, mens statuskoden på 5% normalt peger på en serverresponsfejl.

HTTP-statuskoder for brudte Links

HTTP-statuskode Definition
400 (dårlig anmodning) serveren kan ikke behandle anmodningen, da URL ‘ en er forkert
400 (dårlig anmodning-dårlig vært) serveren kan ikke behandle anmodningen, da værtsnavnet er ugyldigt
400 (dårlig anmodning-dårlig URL): serveren kan ikke behandle anmodningen, da URL ‘ en er af forkert format; manglende tegn som parenteser, skråstreger osv.
400 (dårlig anmodning-Tom) svar returneret af serveren er tomt uden indhold & ingen svarkode
400 (dårlig anmodning-Timeout) HTTP-anmodninger er udløbet
400 (dårlig anmodning-Nulstil) serveren kan ikke behandle anmodningen, da den er optaget af at behandle andre anmodninger eller er blevet fejlkonfigureret af ejeren
404 (side ikke fundet) siden er ikke tilgængelig på serveren
403 (Forbudt) Server nægter at opfylde anmodning som tilladelse er påkrævet
410 (væk) siden er væk. Denne kode er mere permanent end 404
408 (anmodning Time Out) serveren har timeout venter på anmodningen.
503 (Service Ikke tilgængelig) serveren er midlertidigt overbelastet og kan ikke behandle anmodningen

hvorfor tjekke for brudte Links i selen?

hvis en bruger klikker på et brudt link, vil de blive dirigeret til en fejlside. Dette bidrager naturligvis til sub-par brugeroplevelse. Ødelagte links besejrer formålet med at have hjemmesiden i første omgang, fordi brugerne ikke kan finde de oplysninger eller den service, de leder efter.

hvert link på en hjemmeside skal testes for at sikre, at det fungerer som forventet. Men da de fleste hjemmesider har hundredvis (nogle gange tusindvis) af links, der kræves for at få dem til at fungere, vil manuel test af hvert link kræve for store mængder tid, kræfter og ressourcer. Desuden, med automatiseret selen test er en mulighed, det ville være helt unødvendigt.

Læs Mere: Sådan tager du skærmbilleder i selen

almindelige årsager til brudte Links

  • 404 siden blev ikke fundet – destinationssiden er blevet fjernet af ejeren
  • 400 dårlig anmodning – serveren kan ikke behandle HTTP-anmodningen udløst af linket, fordi den anmodede URL-adresse er forkert
  • på grund af brugerens brandvægsindstillinger kan bro.ser ikke få adgang til destinationssiden
  • linket er stavet forkert

Sådan identificeres ødelagte links i selen

for at kontrollere brudte links i selen er processen enkel. På en hjemmeside implementeres hyperlinks ved hjælp af HTML-ankeret (<a>) tag. Alt scriptet skal gøre er at finde hvert anker tag på en hjemmeside, få de tilsvarende URL ‘ er og køre gennem linkene for at kontrollere, om nogen af dem er brudt.

brug følgende trin til at identificere brudte links i selen

  1. Saml alle de links, der findes på en hjemmeside baseret på <a> tag
  2. Send HTTP-anmodning for hvert link
  3. Bekræft HTTP-svarkoden
  4. Find ud af, om linket er gyldigt eller brudt baseret på HTTP-svaret kode
  5. gentag processen for alle links, der er taget med det første trin

hvis du spekulerer på, hvordan du finder ødelagte billeder ved hjælp af selen-chauffør, skal du bruge den samme proces.

Læs Mere: Sådan udføres Dobbeltklik i selen

find brudte Links i selen: eksempel

package automationPractice;import java.io.IOException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.Iterator;import java.util.List;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class BrokenLinks {private static WebDriver driver = null;public static void main(String args) {// TODO Auto-generated method stubString homePage = "http://www.zlti.com";String url = "";HttpURLConnection huc = null;int respCode = 200;driver = new ChromeDriver();driver.manage().window().maximize();driver.get(homePage);List<WebElement> links = driver.findElements(By.tagName("a"));Iterator<WebElement> it = links.iterator();while(it.hasNext()){url = it.next().getAttribute("href");System.out.println(url);if(url == null || url.isEmpty()){System.out.println("URL is either not configured for anchor tag or it is empty");continue;}if(!url.startsWith(homePage)){System.out.println("URL belongs to another domain, skipping it.");continue;}try {huc = (HttpURLConnection)(new URL(url).openConnection());huc.setRequestMethod("HEAD");huc.connect();respCode = huc.getResponseCode();if(respCode >= 400){System.out.println(url+" is a broken link");}else{System.out.println(url+" is a valid link");}} catch (MalformedURLException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}driver.quit();}}

Kør Selentest på rigtige enheder gratis

lad os gennemgå koden for en nærmere forståelse af dens funktionalitet.

1. Import pakker

Importer pakken nedenfor sammen med standardpakker:

import java.net.HttpURLConnection;

metoderne i denne pakke giver testeren mulighed for at sende HTTP-anmodninger og fange HTTP-svarkoder, når de returneres af koden.

2. Saml alle links på hjemmesiden

Find alle links på hjemmesiden og læg dem på en liste:

List<WebElement> links = driver.findElements(By.tagName("a"));

få Iterator til at bevæge sig gennem listen over links:

Iterator<WebElement> it = links.iterator();

3: Identificer og valider URL ‘ er

dette trin handler om at kontrollere, om en bestemt URL tilhører et tredjepartsdomæne, eller om det er tomt/null.

koden nedenfor henter href af ankertagget og gemmer det i URL-variablen.

url = it.next().getAttribute("href");

hvis URL ‘ en er null eller tom, skal du springe trinene over efter dette.

if(url == null || url.isEmpty()){System.out.println("URL is either not configured for anchor tag or it is empty");continue;}

hvis URL ‘ en tilhører hoveddomænet, fortsæt. Hvis det tilhører et tredjepartsdomæne, skal du springe trinene over efter dette.

if(!url.startsWith(homePage)){System.out.println("URL belongs to another domain, skipping it.");continue;}

4. Send HTTP-anmodning

metoder i HttpURLConnection-klassen sender HTTP-anmodninger og fanger HTTP-svarkoden. Derfor output af openconnection () metode (URLConnection) er type støbt til HttpURLConnection.

huc = (HttpURLConnection)(new URL(url).openConnection());

hvis testere indstiller Anmodningstype som “hoved” i stedet for “GET”, returneres kun overskrifter, ikke dokumentets krop.

huc.setRequestMethod("HEAD");

når testeren påberåber sig connect () – metoden, oprettes den faktiske forbindelse til URL ‘ en, og HTTP-anmodningen sendes.

huc.connect();

5. Valider Links

brug getResponseCode () – metoden til at få HTTP-svarkoden til den tidligere sendte HTTP-anmodning.

respCode = huc.getResponseCode();

kontroller linkstatus (brudt eller ej) baseret på svarkoden

if(respCode >= 400){System.out.println(url+" is a broken link");}else{System.out.println(url+" is a valid link");}

at finde brudte links i selen er en integreret del af hjemmesideudvikling og test. Ved at bruge metoden beskrevet i denne artikel kan testere identificere funktionssvigt hurtigt og korrekt. At tillade brudte links at passere ind i produktionsfasen ville skade brugeroplevelsen alvorligt og skal forhindres med ekstrem grundighed. Dette er grunden til at vide, hvordan man tester brudte links i selen, er en vigtig del af en testers værktøjssæt.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.