Az összes / megszakadt hivatkozás megkeresése a Selenium Webdriver használatával

Tartalomjegyzék:

Anonim

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.

  1. Gyűjtse össze az összes linket a weboldalon a címke alapján.
  2. Küldjön HTTP-kérést a linkről, és olvassa el a HTTP-válaszkódot.
  3. A HTTP válaszkód alapján derítse ki, hogy a hivatkozás érvényes vagy megszakadt-e.
  4. 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 a  linkeket = 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 a  linkeket = driver.findElements (By.tagName ("a"));

Szerezd meg az Iteratort, hogy végigmenjen a listán.

Iterátor  it = 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 a  linkElements = 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.

  • A képlinkek elérése By.cssSelector () és By.xpath () módszerekkel történik.
  • 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.