februari 6, 2022

hur man hittar trasiga länkar i Selenium

Innehållsförteckning

innan vi diskuterar hur man hittar trasiga länkar med Selenium WebDriver, låt oss ta itu med en mer grundläggande fråga.

Vad är trasiga länkar?

till att börja med är en länk ett HTML-objekt som gör det möjligt för användare att migrera från en webbsida till en annan när de klickar på den. Det är ett sätt att navigera mellan olika webbsidor på internet.

en trasig länk, även ofta kallad en död länk, är en som inte fungerar dvs. inte omdirigera till webbsidan det är tänkt att. Detta inträffar vanligtvis eftersom webbplatsen eller en viss webbsida är nere eller inte finns. När någon klickar på en trasig länk visas ett felmeddelande.

brutna länkar kan existera på grund av någon form av serverfel, vilket i sin tur orsakar att motsvarande sida inte fungerar och inte visas. En giltig URL har en 2xx HTTP-statuskod. Trasiga länkar, som i huvudsak är ogiltiga HTTP-förfrågningar har 4xx-och 5xx-statuskoder.

4xx-statuskoden hänvisar till ett fel på klientsidan, medan 5xx-statuskoden vanligtvis pekar på ett serversvarsfel.

HTTP-statuskoder för trasiga länkar

HTTP-statuskod Definition
400 (Dålig begäran) servern kan inte behandla begäran eftersom URL är felaktig
400 (Dålig begäran-Dålig värd) servern kan inte behandla begäran eftersom värdnamnet är ogiltigt
400 (Dålig begäran-Dålig URL): servern kan inte behandla begäran eftersom webbadressen är av felaktigt format; saknade tecken som parentes, snedstreck etc.
400 (Dålig begäran-Tom) svar som returneras av servern är tomt utan innehåll & ingen svarskod
400 (Bad Request-Timeout) HTTP-förfrågningar har tagit slut
400 (Bad Request – Reset) servern kan inte behandla begäran, eftersom den är upptagen med att behandla andra förfrågningar eller har felkonfigurerats av webbplatsägaren
404 (sidan kunde inte hittas) sidan är inte tillgänglig på servern
403 (Förbjudet) servern vägrar att uppfylla begäran som tillstånd krävs
410 (borta) sidan är borta. Denna kod är mer permanent än 404
408 (Request Time Out) servern har timed-out väntar på begäran.
503 (Tjänsten är inte tillgänglig) servern är tillfälligt överbelastad och kan inte behandla begäran

varför kontrollera om trasiga länkar i selen?

om en användare klickar på en trasig länk kommer de att dirigeras till en felsida. Detta bidrar naturligtvis till sub – par användarupplevelse. Trasiga länkar besegra syftet med att ha webbplatsen i första hand eftersom användarna inte kan hitta den information eller tjänst de letar efter.

varje länk på en webbplats måste testas för att säkerställa att den fungerar som förväntat. Men med tanke på att de flesta webbplatser har hundratals (ibland tusentals) länkar som krävs för att få dem att fungera, skulle manuell testning av varje länk kräva alltför stora mängder tid, ansträngning och resurser. Dessutom, med automatiserad Selentestning som ett alternativ, skulle det vara helt onödigt.

Läs Mer: Hur man tar skärmdumpar i selen

vanliga orsaker till trasiga länkar

  • 404 sidan hittades inte – destinationswebbsidan har tagits bort av ägaren
  • 400 Dålig begäran – servern kan inte behandla HTTP-begäran som utlöses av länken eftersom den begärda URL-adressen är fel
  • på grund av användarens brandväggsinställningar kan webbläsaren inte komma åt destinationswebbsidan
  • länken är felstavad

hur man identifierar trasiga länkar i Selenium WebDriver

för att kontrollera trasiga länkar i selen är processen enkel. På en webbsida implementeras hyperlänkar med HTML-ankare (<en>) – tagg. Allt skriptet behöver göra är att hitta varje ankartagg på en webbsida, få motsvarande webbadresser och springa igenom länkarna för att kontrollera om någon av dem är trasiga.

använd följande steg för att identifiera trasiga länkar i selen

  1. samla alla länkar som finns på en webbsida baserat på <a> tagg
  2. skicka HTTP-begäran för varje länk
  3. verifiera HTTP-svarskoden
  4. Bestäm om länken är giltig eller trasig baserat på HTTP-svaret kod
  5. upprepa processen för alla länkar som tagits med det första steget

om du undrar hur du hittar trasiga bilder med Selenium WebDriver, använd samma process.

Läs Mer: Hur man utför dubbelklick i selen

hitta trasiga länkar i selen: exempel

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å riktiga enheter gratis

Låt oss gå igenom koden för en närmare förståelse av dess funktionalitet.

1. Importera paket

importera paketet nedan tillsammans med standardpaket:

import java.net.HttpURLConnection;

metoderna i det här paketet tillåter testaren att skicka HTTP-förfrågningar och fånga HTTP-svarskoder när de returneras av koden.

2. Samla alla länkar på webbsidan

hitta alla länkar på webbsidan och placera dem i en lista:

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

hämta Iterator för att gå igenom listan med länkar:

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

3: Identifiera och validera webbadresser

det här steget handlar om att kontrollera om en viss URL tillhör en tredjepartsdomän eller om den är tom/null.

koden nedan hämtar href för ankartaggen och lagrar den i URL-variabeln.

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

om webbadressen är null eller tom, hoppa över stegen efter detta.

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

om webbadressen tillhör huvuddomänen, fortsätt. Om det tillhör en tredjepartsdomän, hoppa över stegen efter detta.

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

4. Skicka HTTP-begäran

metoder i HttpURLConnection-klassen skickar HTTP-förfrågningar och fångar HTTP-svarskoden. Därför är utgången från openConnection () – metoden (URLConnection) typ gjuten till HttpURLConnection.

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

om testare ställer in Förfrågningstyp som ”HEAD” istället för ”GET”, kommer endast rubriker att returneras, inte dokumentkroppen.

huc.setRequestMethod("HEAD");

när testaren åberopar connect () – metoden upprättas den faktiska anslutningen till webbadressen och HTTP-begäran skickas.

huc.connect();

5. Validera länkar

använd getResponseCode () – metoden för att hämta HTTP-svarskoden för den tidigare skickade HTTP-begäran.

respCode = huc.getResponseCode();

kontrollera länkstatus (trasig eller inte) baserat på svarskoden

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

att hitta trasiga länkar i Selenium är en integrerad del av webbplatsutveckling och testning. Genom att använda metoden som beskrivs i den här artikeln kan testare identifiera felaktiga länkar snabbt och korrekt. Att låta trasiga länkar passera in i produktionssteget skulle allvarligt skada användarupplevelsen och måste förhindras med extrem noggrannhet. Det är därför att veta hur man testar trasiga länkar i selen är en viktig del av en testares verktygslåda.

Lämna ett svar

Din e-postadress kommer inte publiceras.