Mik azok a megszakadt linkek?
A törött linkek olyan linkek vagy URL-ek, amelyek nem érhetők el. Lehet, hogy valamilyen szerverhiba miatt nem működnek vagy nem működnek
Az URL-nek mindig 2xx állapotú lesz, amely érvényes. Különböző HTTP-állapotkódok vannak, amelyeknek más a célja. Érvénytelen kérelem esetén a HTTP állapota 4xx és 5xx.
A 4xx állapotkód osztály főként az ügyféloldali hibákra, az 5xx állapotkódok osztálya pedig elsősorban a kiszolgáló válaszhibájára vonatkozik.
Nagy valószínűséggel nem tudjuk megerősíteni, hogy a link működik-e vagy sem, amíg nem kattintunk és megerősítjük.
Miért érdemes ellenőrizni a Megszakadt linkeket?
Mindig győződjön meg arról, hogy nincsenek megszakadt hivatkozások a webhelyen, mert a felhasználónak nem szabad egy hibaoldalra kerülnie.
A hiba akkor fordul elő, ha a szabályokat nem frissítik megfelelően, vagy ha a kért erőforrások nem léteznek a kiszolgálón.
A linkek kézi ellenőrzése fárasztó feladat, mert minden weboldal sok linket tartalmazhat, és a kézi folyamatokat meg kell ismételni minden oldalon.
A Seleniumot használó Automation szkript, amely automatizálja a folyamatot, alkalmasabb megoldás.
Hogyan lehet ellenőrizni a Megszakadt hivatkozásokat és képeket
A megszakadt hivatkozások ellenőrzéséhez a következő lépéseket kell tennie.
- Gyűjtse össze az összes linket a weboldalon a címke alapján.
- Küldjön HTTP-kérést a linkről, és olvassa el a HTTP-válaszkódot.
- A HTTP válaszkód alapján derítse ki, hogy a hivatkozás érvényes vagy megszakadt-e.
- Ismételje meg ezt az összes elfogott linknél.
Kód a Broken linkek megtalálásához egy weboldalon
Az alábbiakban a webes illesztőprogram kódja teszteli a felhasználási esetünket:
csomag automatizálásGyakorlat;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;nyilvános osztály BrokenLinks {saját statikus WebDriver illesztőprogram = null;public static void main (String [] érvel) {// TODO Automatikusan létrehozott módszercsonkString homePage = "http://www.zlti.com";Karakterlánc URL = "";HttpURLConnection huc = null;int respCode = 200;illesztőprogram = new ChromeDriver ();driver.manage (). window (). maximize ();driver.get (homePage);Sorolja fel alinkeket = driver.findElements (By.tagName ("a"));Iterátor it = linkek.iterátor ();while (it.hasNext ()) {url = it.next (). getAttribute ("href");System.out.println (url);if (url == null || url.isEmpty ()) {System.out.println ("vagy az URL nincs konfigurálva a horgonycímkéhez, vagy üres");folytatni;}if (! url.startsWith (homePage)) {System.out.println ("Az URL egy másik domainhez tartozik, kihagyva.");folytatni;}próbáld ki {huc = (HttpURLConnection) (új URL (url) .openConnection ());huc.setRequestMethod ("HEAD");huc.connect ();respCode = huc.getResponseCode ();if (respCode> = 400) {System.out.println (az url + "egy megszakadt hivatkozás");}más{System.out.println (az url + "egy érvényes link");}} fogás (rosszul formáltURLException e) {// TODO Automatikusan létrehozott fogási blokke.printStackTrace ();} fogás (IOException e) {// TODO Automatikusan létrehozott fogási blokke.printStackTrace ();}}driver.quit ();}}
A kód magyarázata Példa
1. lépés: Csomagok importálása
Importálás a csomag alatt az alapértelmezett csomagok mellett:
import java.net.HttpURLConnection;
A csomagban található módszerek segítségével HTTP-kéréseket küldhetünk és HTTP-válaszkódokat rögzíthetünk a válaszból.
2. lépés: Gyűjtse össze az összes linket a weboldalon
Azonosítsa az összes linket egy weboldalon, és tárolja a Listában.
Sorolja fel alinkeket = driver.findElements (By.tagName ("a"));
Szerezd meg az Iteratort, hogy végigmenjen a listán.
Iterátorit = linkek.iterátor ();
3. lépés: Az URL azonosítása és ellenőrzése
Ebben a részben ellenőrizni fogjuk, hogy az URL harmadik fél domainjéhez tartozik-e, vagy az URL üres / null.
Szerezzen href horgonycímkét, és tárolja az url változóban.
url = it.next (). getAttribute ("href");
Ellenőrizze, hogy az URL null vagy Üres-e, és hagyja ki a fennmaradó lépéseket, ha a feltétel teljesül.
if (url == null || url.isEmpty ()) {System.out.println ("vagy az URL nincs konfigurálva a horgonycímkéhez, vagy üres");folytatni;}
Ellenőrizze, hogy az URL fő domainhez vagy harmadik félhez tartozik-e. Hagyja ki a fennmaradó lépéseket, ha harmadik fél domainjéhez tartozik.
if (! url.startsWith (homePage)) {System.out.println ("Az URL egy másik domainhez tartozik, kihagyva.");folytatni;}
4. lépés: Küldjön http-kérést
A HttpURLConnection osztály rendelkezik módszerekkel a HTTP kérés küldésére és a HTTP válaszkód rögzítésére. Tehát az openConnection () metódus (URLConnection) kimenete HttpURLConnection-be van öntve.
huc = (HttpURLConnection) (új URL (url) .openConnection ());
A Kérés típusát beállíthatjuk "HEAD" helyett "GET". Tehát csak a fejléceket adja vissza, és ne a dokumentum törzsét.
huc.setRequestMethod ("HEAD");
A connect () metódus meghívásakor létrejön a tényleges kapcsolat az URL-lel, és a kérés elküldésre kerül.
huc.connect ();
5. lépés: A linkek ellenőrzése
A getResponseCode () metódus segítségével válaszkódot kaphatunk a kéréshez
respCode = huc.getResponseCode ();
A válaszkód alapján megpróbáljuk ellenőrizni a link állapotát.
if (respCode> = 400) {System.out.println (az url + "egy megszakadt hivatkozás");}más{System.out.println (az url + "egy érvényes link");}
Így minden linket megszerezhetünk a weboldalról, és kinyomtathatjuk, hogy a hivatkozások érvényesek-e vagy megszakadtak-e.
Remélem, hogy ez az oktatóanyag segít a megszakadt hivatkozások ellenőrzésében szelén segítségével.
Hogyan juthat el egy weboldal MINDEN linkjéhez
A webes tesztelés egyik általános eljárása annak tesztelése, hogy az oldalon található összes link működik-e. Ezt kényelmesen megteheti a Java for hurok , a findElements () és a By.tagName ("a") módszer kombinációjával .
A findElements () metódus az a címkével ellátott webes elemek listáját adja vissza. A for-hurok használatával minden elem elérhető.
Az alábbi WebDriver kód ellenőrzi a Mercury Tours honlapjának minden egyes linkjét, hogy meghatározza azokat, amelyek működnek, és amelyeket még fejlesztenek.
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import java.util.List;importálja a java.util.concurrent.TimeUnit;import org.openqa.selenium. *;P1 nyilvános osztály {public static void main (String [] érvel) {Karaktersorozat baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver illesztőprogram = new ChromeDriver ();String underConsTitle = "Építés alatt: Mercury Tours";driver.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS);driver.get (baseUrl);Sorolja fel alinkElements = driver.findElements (By.tagName ("a"));Karakterlánc [] linkTexts = új karakterlánc [linkElements.size ()];int i = 0;// az egyes linkelemek link szövegeinek kibontásafor (WebElement e: linkElements) {linkTexts [i] = e.getText ();i ++;}// tesztelje az egyes linkeketfor (String t: linkTexts) {driver.findElement (By.linkText (t)). kattintson ();if (driver.getTitle (). egyenlő (underConsTitle)) {System.out.println ("\" "+ t +" \ ""+ "fejlesztés alatt áll.");} más {System.out.println ("\" "+ t +" \ ""+ "működik.");}driver.navigate (). back ();}driver.quit ();}}
A kimenetnek hasonlónak kell lennie az alább feltüntetetthez.
Hibaelhárítás
Elszigetelt esetben a kód által elérhető első link a "Home" link lehet. Ebben az esetben a driver.navigate.back () művelet üres oldalt jelenít meg, amikor az első művelet megnyitja a böngészőt. Az illesztőprogram nem fogja megtalálni az összes többi linket egy üres böngészőben. Tehát az IDE kivételt vet, és a kód többi része nem fog végrehajtódni. Ez könnyen kezelhető egy If hurok segítségével.