många gånger möter vi trasiga hyperlänkar på webbplatser. Idag lär vi oss att hitta trasiga länkar med selen. Innan vi går in i dessa ämnen, låt oss lära oss de grundläggande frågorna.
Vad är trasiga länkar?
en trasig länk (aka dead link eller link rots) är en länk på en webbplats som inte fungerar (dvs., det omdirigerar inte till sidan det är tänkt att) på grund av en eller flera av följande skäl.
- destinationssidan är inte längre tillgänglig (offline eller permanent flyttad).
- destinationssidan har flyttats utan att en omdirigering har lagts till.
- URL-strukturen (permalänkar) på en webbsida ändras.
- en ogiltig URL(felstavad, felstavad, etc.) nämns i källsidan.
- på grund av brandvägg eller geolokaliseringsbegränsning.
en URL som har en 2xx HTTP-statuskod är giltig och webbadresserna har 4XX och 5XX HTTP-statuskoder är ogiltiga. Om du står inför 4xx-statuskoden beror det på ett fel på klientsidan och statuskoden är 5xx vilket betyder att det beror på ett serversvarsfel.
varför leta efter trasiga länkar?
webbservrar returnerar ett felmeddelande när en användare försöker komma åt en trasig länk. Användare kommer att dirigeras till en felsida när de klickar på en trasig länk. Detta leder till en dålig användarupplevelse. Vi måste hantera dem kontinuerligt och ta bort alla befintliga trasiga länkar på vår hemsida. Vi kan göra denna process manuellt. De flesta webbplatser har hundratals eller tusen länkar och det är inte möjligt att testa dem alla manuellt. Det kräver enorm tid, resurser och ansträngning. Istället för att inspektera manuellt kan vi utnyttja Selenium WebDriver för att testa trasiga länkar.
missa inte: manuell testning vs automationstestning – skillnader alla borde veta
hur man verifierar de trasiga länkarna och bilderna
Följ stegen nedan för att verifiera trasiga länkar.
- alla länkar är märkta med antingen länk < a> eller bild < img> på en webbsida. Samla länkarna baserat på taggar < a>, <img>
- skicka HTTP-begäran och läs HTTP-svarskod för varje länk.
på så sätt kan du ta reda på om länken är giltig eller ogiltig baserat på svarskoder.
hitta trasiga länkar med Selenium WebDriver
ett av de viktigaste testfallen är att hitta trasiga länkar på en webbsida. På grund av förekomsten av trasiga länkar skadas ditt webbplats rykte och det kommer att få en negativ inverkan på ditt företag. Det är obligatoriskt att hitta och fixa alla trasiga länkar innan de släpps. Om en länk inte fungerar står vi inför ett meddelande som 404-sida hittades inte.
Låt oss se några av HTTP-statuskoderna.
under koden hämtar alla länkar på en viss webbplats (dvs. SoftwareTestingMaterial.com) använder WebDriver-kommandon och läser statusen för varje href-länk med hjälp av HttpURLConnection-klassen.
Klicka här för mer information om HttpURLConnection
med tanke på tydlig förklaring i kommentarfältet inom själva programmet. Gå igenom det för att förstå flödet.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
paketet softwareTestingMaterial;
importera java. net. HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class BrokenLinks {
public static void main(String args) throws InterruptedException {
//Instantiating FirefoxDriver
System.setProperty(”webdriver.gecko.driver”, ”D:\\ Selen miljö \ \ drivrutiner \ \ geckodriver.exe”);
WebDriver driver = ny FirefoxDriver();
//maximera webbläsaren
drivrutin.hantera().fönster().maximera();
//Implicit vänta i 10 sekunder
drivrutin.hantera().timeout().implicitlyWait (10, TimeUnit.Sekunder);
//att starta softwaretestingmaterial.com
förare.få(”https://www.softwaretestingmaterial.com”);
//vänta i 5 sekunder
tråd.sova (5000);
//används tagname metod för att samla listan över objekt med tagName ”a”
//findElements – att hitta alla element med i den aktuella sidan. Den returnerar en lista över alla webelements eller en tom lista om ingenting matchar
lista<WebElement> links = driver.findElements (av.tagName (”a”));
//för att skriva ut det totala antalet länkar
systemet.ut.println (”totalt länkar är” + länkar.storlek());
//används för loop till
för(int i=0; i<länkar.storlek (); i++) {
WebElement element = länkar.get (i);
//genom att använda attributet ”href” kunde vi få webbadressen till den begärda länken
String url=element.getAttribute (”href”);
//anropar verifyLink () – metoden här. Passerar parametern som url som vi samlat i ovanstående länk
/ / se detaljerad funktionalitet verifyLink (url) metoden nedan
verifyLink(url);
}
}
// funktionen nedan verifyLink (String urlLink) verifierar eventuella trasiga länkar och returnerar serverstatus.
offentlig statisk void verifyLink (sträng urlLink) {
//ibland kan vi möta undantag ”java. net. Missbildningsurlexception”. Håll koden i försök fånga block för att fortsätta den trasiga länkanalysen
försök {
/ / använd URL-klass-skapa objekt för URL-klassen och skicka urllink som parameter
URL link = ny URL ( urlLink);
// skapa en anslutning med URL-objekt (dvs länk)
HttpURLConnection httpConn =(HttpURLConnection) länk.openConnection();
//Ställ in timeout i 2 sekunder
httpConn.setConnectTimeout(2000);
//Anslut med anslutningsmetod
httpConn.Anslut();
//använd getResponseCode () för att få svarskoden.
om(httpConn.getResponseCode()== 200) {
systemet.ut.println (urlLink+ ” – ” +httpConn.getResponseMessage());
}
om (httpConn.getResponseCode()== 404) {
systemet.ut.println (urlLink+ ” – ” +httpConn.getResponseMessage());
}
}
//getResponseCode method returns = IOException-om ett fel uppstod anslutning till servern.
fångst (undantag e) {
//e. printStackTrace();
}
}
}
|
om det här inlägget på ”hitta trasiga länkar med Selenium WebDriver” kunde hjälpa, bry dig inte om att dela det med andra.
om du inte är en vanlig läsare av SoftwareTestingMaterial.com då rekommenderar jag starkt att du registrerar dig för det kostnadsfria nyhetsbrevet via länken nedan.