Was sind defekte Links?
Unterbrochene Links sind Links oder URLs, die nicht erreichbar sind. Sie sind möglicherweise ausgefallen oder funktionieren aufgrund eines Serverfehlers nicht
Eine URL hat immer den Status 2xx, der gültig ist. Es gibt verschiedene HTTP-Statuscodes, die unterschiedliche Zwecke haben. Bei einer ungültigen Anforderung lautet der HTTP-Status 4xx und 5xx.
Die 4xx-Klasse des Statuscodes ist hauptsächlich für clientseitige Fehler vorgesehen, und die 5xx-Klasse von Statuscodes ist hauptsächlich für den Serverantwortfehler vorgesehen.
Wir können höchstwahrscheinlich nicht bestätigen, ob dieser Link funktioniert oder nicht, bis wir darauf klicken und ihn bestätigen.
Warum sollten Sie defekte Links überprüfen?
Sie sollten immer sicherstellen, dass die Website keine fehlerhaften Links enthält, da der Benutzer nicht auf einer Fehlerseite landen sollte.
Der Fehler tritt auf, wenn die Regeln nicht korrekt aktualisiert werden oder die angeforderten Ressourcen nicht auf dem Server vorhanden sind.
Das manuelle Überprüfen von Links ist eine mühsame Aufgabe, da jede Webseite eine große Anzahl von Links enthalten kann und der manuelle Vorgang für alle Seiten wiederholt werden muss.
Ein Automatisierungsskript mit Selenium, das den Prozess automatisiert, ist eine geeignetere Lösung.
So überprüfen Sie die defekten Links und Bilder
Um die defekten Links zu überprüfen, müssen Sie die folgenden Schritte ausführen.
- Sammeln Sie alle Links auf der Webseite basierend auf dem -Tag.
- Senden Sie eine HTTP-Anfrage für den Link und lesen Sie den HTTP-Antwortcode.
- Finden Sie anhand des HTTP-Antwortcodes heraus, ob der Link gültig oder fehlerhaft ist.
- Wiederholen Sie diesen Vorgang für alle erfassten Links.
Code zum Auffinden der defekten Links auf einer Webseite
Unten finden Sie den Web-Treibercode, der unseren Anwendungsfall testet:
PaketautomatisierungPraxis;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;öffentliche Klasse BrokenLinks {privater statischer WebDriver-Treiber = null;public static void main (String [] args) {// TODO Automatisch generierter MethodenstubString homePage = "http://www.zlti.com";String url = "";HttpURLConnection huc = null;int respCode = 200;Treiber = neuer ChromeDriver ();driver.manage (). window (). maxim ();driver.get (homePage);Listlinks = driver.findElements (By.tagName ("a"));Iterator it = links.iterator ();while (it.hasNext ()) {url = it.next (). getAttribute ("href");System.out.println (url);if (url == null || url.isEmpty ()) {System.out.println ("URL ist entweder nicht für das Ankertag konfiguriert oder leer");fortsetzen;}}if (! url.startsWith (homePage)) {System.out.println ("URL gehört zu einer anderen Domain und wird übersprungen.");fortsetzen;}}Versuchen {huc = (HttpURLConnection) (neue URL (URL) .openConnection ());huc.setRequestMethod ("HEAD");huc.connect ();respCode = huc.getResponseCode ();if (respCode> = 400) {System.out.println (URL + "ist ein defekter Link");}}sonst{System.out.println (URL + "ist ein gültiger Link");}}} catch (MalformedURLException e) {// TODO Automatisch generierter Fangblocke.printStackTrace ();} catch (IOException e) {// TODO Automatisch generierter Fangblocke.printStackTrace ();}}}}driver.quit ();}}}}
Erklären des Codebeispiels
Schritt 1: Pakete importieren
Importieren Sie das folgende Paket zusätzlich zu den Standardpaketen:
import java.net.HttpURLConnection;
Mit den Methoden in diesem Paket können wir HTTP-Anforderungen senden und HTTP-Antwortcodes aus der Antwort erfassen.
Schritt 2: Sammeln Sie alle Links auf der Webseite
Identifizieren Sie alle Links auf einer Webseite und speichern Sie sie in der Liste.
Listlinks = driver.findElements (By.tagName ("a"));
Besorgen Sie sich den Iterator, um die Liste zu durchlaufen.
Iteratorit = links.iterator ();
Schritt 3: URL identifizieren und validieren
In diesem Teil prüfen wir, ob die URL zur Domain eines Drittanbieters gehört oder ob die URL leer / null ist.
Holen Sie sich href des Ankertags und speichern Sie es in der URL-Variablen.
url = it.next (). getAttribute ("href");
Überprüfen Sie, ob die URL null oder leer ist, und überspringen Sie die verbleibenden Schritte, wenn die Bedingung erfüllt ist.
if (url == null || url.isEmpty ()) {System.out.println ("URL ist entweder nicht für das Ankertag konfiguriert oder leer");fortsetzen;}}
Überprüfen Sie, ob die URL zu einer Hauptdomain oder einem Drittanbieter gehört. Überspringen Sie die verbleibenden Schritte, wenn es zur Domäne eines Drittanbieters gehört.
if (! url.startsWith (homePage)) {System.out.println ("URL gehört zu einer anderen Domain und wird übersprungen.");fortsetzen;}}
Schritt 4: Senden Sie eine http-Anfrage
Die HttpURLConnection-Klasse verfügt über Methoden zum Senden einer HTTP-Anforderung und zum Erfassen des HTTP-Antwortcodes. Die Ausgabe der openConnection () -Methode (URLConnection) wird vom Typ in HttpURLConnection umgewandelt.
huc = (HttpURLConnection) (neue URL (URL) .openConnection ());
Wir können den Anforderungstyp als "HEAD" anstelle von "GET" festlegen. Damit werden nur Header zurückgegeben und kein Dokumententext.
huc.setRequestMethod ("HEAD");
Beim Aufrufen der connect () -Methode wird die tatsächliche Verbindung zur URL hergestellt und die Anforderung gesendet.
huc.connect ();
Schritt 5: Überprüfen von Links
Mit der Methode getResponseCode () können wir den Antwortcode für die Anforderung abrufen
respCode = huc.getResponseCode ();
Basierend auf dem Antwortcode werden wir versuchen, den Linkstatus zu überprüfen.
if (respCode> = 400) {System.out.println (URL + "ist ein defekter Link");}}sonst{System.out.println (URL + "ist ein gültiger Link");}}
Auf diese Weise können wir alle Links von der Webseite abrufen und ausdrucken, ob die Links gültig oder fehlerhaft sind.
Hoffe, dieses Tutorial hilft Ihnen bei der Überprüfung von defekten Links mit Selen.
So erhalten Sie ALLE Links einer Webseite
Eine der gängigen Prozeduren beim Webtest besteht darin, zu testen, ob alle auf der Seite vorhandenen Links funktionieren. Dies kann bequem mithilfe einer Kombination der Java- Methode for-each loop , findElements () und By.tagName ("a") erfolgen .
Die findElements () -Methode gibt eine Liste von Webelementen mit dem Tag a zurück. Mit einer for-each-Schleife wird auf jedes Element zugegriffen.
Der folgende WebDriver-Code überprüft jeden Link auf der Mercury Tours-Homepage, um festzustellen, welche funktionieren und welche sich noch im Aufbau befinden.
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.chrome.ChromeDriver;import java.util.List;import java.util.concurrent.TimeUnit;import org.openqa.selenium. *;öffentliche Klasse P1 {public static void main (String [] args) {String baseUrl = "http://demo.guru99.com/test/newtours/";System.setProperty ("webdriver.chrome.driver", "G: \\ chromedriver.exe");WebDriver-Treiber = neuer ChromeDriver ();String underConsTitle = "Im Aufbau: Mercury Tours";driver.manage (). timeouts (). implicitlyWait (5, TimeUnit.SECONDS);driver.get (baseUrl);ListlinkElements = driver.findElements (By.tagName ("a"));String [] linkTexts = new String [linkElements.size ()];int i = 0;// extrahiere die Linktexte jedes Linkelementsfür (WebElement e: linkElements) {linkTexts [i] = e.getText ();i ++;}}// teste jeden Linkfor (String t: linkTexts) {driver.findElement (By.linkText (t)). click ();if (driver.getTitle (). equals (underConsTitle)) {System.out.println ("" + t + "" "+ "befindet sich im Aufbau.");} else {System.out.println ("" + t + "" "+ "funktioniert.");}}driver.navigate (). back ();}}driver.quit ();}}}}
Die Ausgabe sollte der unten angegebenen ähnlich sein.
Fehlerbehebung
In einem Einzelfall könnte der erste Link, auf den der Code zugreift, der "Home" -Link sein. In diesem Fall zeigt die Aktion driver.navigate.back () eine leere Seite an, wenn die erste Aktion einen Browser öffnet. Der Treiber kann nicht alle anderen Links in einem leeren Browser finden. IDE löst also eine Ausnahme aus und der Rest des Codes wird nicht ausgeführt. Dies kann einfach mit einer If-Schleife gehandhabt werden.