Februar 6, 2022

So finden Sie defekte Links in Selen

Inhaltsverzeichnis

Bevor wir besprechen, wie Sie defekte Links mit Selenium WebDriver finden, sollten wir uns mit einer grundlegenderen Frage befassen.

Was sind defekte Links?

Zunächst ist ein Link ein HTML-Objekt, mit dem Benutzer beim Klicken von einer Webseite zur anderen migrieren können. Es ist ein Mittel, um zwischen verschiedenen Webseiten im Internet zu navigieren.

Ein defekter Link, oft auch als toter Link bezeichnet, funktioniert nicht. leitet nicht zu der Webseite um, zu der es bestimmt ist. Dies geschieht normalerweise, weil die Website oder eine bestimmte Webseite nicht verfügbar ist oder nicht existiert. Wenn jemand auf einen defekten Link klickt, wird eine Fehlermeldung angezeigt.

Defekte Links können aufgrund eines Serverfehlers vorhanden sein, der wiederum dazu führt, dass die entsprechende Seite fehlschlägt und nicht angezeigt wird. Eine gültige URL hat einen HTTP-Statuscode 2xx. Defekte Links, bei denen es sich im Wesentlichen um ungültige HTTP-Anforderungen handelt, haben 4xx- und 5xx-Statuscodes.

Der 4xx-Statuscode bezieht sich auf einen clientseitigen Fehler, während der 5xx-Statuscode normalerweise auf einen Serverantwortfehler verweist.

HTTP-Statuscodes für defekte Links

HTTP-Statuscode Definition
400 ( Bad Request) Server kann Anfrage nicht verarbeiten, da URL falsch ist
400 ( Bad Request – Bad Host) Server kann Anforderung nicht verarbeiten, da der Hostname ungültig ist
400 ( Schlechte Anfrage – Schlechte URL): Der Server kann die Anfrage nicht verarbeiten, da die URL ein falsches Format hat. fehlende Zeichen wie Klammern, Schrägstriche usw.
400 ( Bad Request – Empty) Vom Server zurückgegebene Antwort ist leer ohne Inhalt & kein Antwortcode
400 ( Bad Request – Timeout) HTTP-Anfragen haben ein Zeitlimit
400 ( Bad Request – Reset) Der Server kann die Anforderung nicht verarbeiten, da er andere Anforderungen verarbeitet oder vom Websitebesitzer falsch konfiguriert wurde
404 ( Seite nicht gefunden) Seite ist auf dem Server nicht verfügbar
403 ( Verboten) Server weigert sich, die anfrage als Autorisierung erforderlich
410 ( Weg) Seite ist weg. Dieser Code ist dauerhafter als 404
408 ( Anforderungszeitüberschreitung) Der Server hat eine Zeitüberschreitung, die auf die Anforderung wartet.
503 ( Service nicht verfügbar) Server ist vorübergehend überlastet und kann die Anforderung nicht verarbeiten

Warum in Selenium nach defekten Links suchen?

Wenn ein Benutzer auf einen defekten Link klickt, wird er zu einer Fehlerseite weitergeleitet. Dies trägt offensichtlich zu einer unterdurchschnittlichen Benutzererfahrung bei. Defekte Links vereiteln den Zweck, die Website überhaupt zu haben, da Benutzer die gesuchten Informationen oder Dienste nicht finden können.

Jeder Link auf einer Website muss getestet werden, um sicherzustellen, dass er wie erwartet funktioniert. Angesichts der Tatsache, dass die meisten Websites Hunderte (manchmal Tausende) von Links haben, die erforderlich sind, damit sie funktionieren, würde das manuelle Testen jedes Links übermäßig viel Zeit, Mühe und Ressourcen erfordern. Darüber hinaus wäre ein automatisierter Selentest als Option völlig unnötig.

Lesen Sie mehr: So erstellen Sie Screenshots in Selen

Häufige Gründe für defekte Links

  • 404 Seite nicht gefunden – Die Zielwebseite wurde vom Eigentümer entfernt
  • 400 Bad Request – Der Server kann die durch den Link ausgelöste HTTP-Anforderung nicht verarbeiten, da die angeforderte URL-Adresse falsch ist
  • Aufgrund der Firewall-Einstellungen des Benutzers kann der Browser nicht auf die Zielwebseite zugreifen
  • Der Link ist falsch geschrieben

So identifizieren Sie defekte Links in Selenium WebDriver

Um defekte Links in Selenium zu überprüfen, ist der Vorgang einfach. Auf einer Webseite werden Hyperlinks mit dem HTML-Anker (<a>) -Tag implementiert. Alles, was das Skript tun muss, ist, jedes Anker-Tag auf einer Webseite zu finden, die entsprechenden URLs abzurufen und die Links durchzugehen, um zu überprüfen, ob einer von ihnen defekt ist.

Führen Sie die folgenden Schritte aus, um fehlerhafte Links in Selenium zu identifizieren

  1. Sammeln Sie alle auf einer Webseite vorhandenen Links basierend auf dem < a> -Tag
  2. Senden Sie eine HTTP-Anforderung für jeden Link
  3. Überprüfen Sie den HTTP-Antwortcode
  4. Bestimmen Sie anhand der HTTP-Antwort code
  5. Wiederholen Sie den Vorgang für alle mit dem ersten Schritt erfassten Links

Wenn Sie sich fragen, wie Sie mit Selenium WebDriver fehlerhafte Bilder finden, verwenden Sie denselben Vorgang.

Lesen Sie mehr: So führen Sie einen Doppelklick in Selen aus

Defekte Links in Selen finden: Beispiel

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();}}

Führen Sie Selentests kostenlos auf realen Geräten durch

Lassen Sie uns den Code durchgehen, um die Funktionalität besser zu verstehen.

1. Pakete importieren

Importieren Sie das folgende Paket zusammen mit den Standardpaketen:

import java.net.HttpURLConnection;

Mit den Methoden in diesem Paket kann der Tester HTTP-Anforderungen senden und HTTP-Antwortcodes erfassen, wenn sie vom Code zurückgegeben werden.

2. Sammle alle Links auf der Webseite

Finde alle Links auf der Webseite und platziere sie in einer Liste:

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

Erhalten Iterator durch die Liste der Links zu bewegen:

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

3: Identifizieren und Validieren von URLs

In diesem Schritt wird überprüft, ob eine bestimmte URL zu einer Domäne eines Drittanbieters gehört oder ob sie leer / null ist.

Der folgende Code ruft die href des Anker-Tags ab und speichert sie in der URL-Variablen.

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

Wenn die URL null oder leer ist, überspringen Sie die folgenden Schritte.

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

Wenn die URL zur Hauptdomain gehört, fahren Sie fort. Wenn es zu einer Domäne eines Drittanbieters gehört, überspringen Sie die folgenden Schritte.

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

4. HTTP-Anforderung senden

Methoden in der HttpURLConnection-Klasse senden HTTP-Anforderungen und erfassen den HTTP-Antwortcode. Daher wird die Ausgabe der openConnection () -Methode (URLConnection) in HttpURLConnection umgewandelt.

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

Wenn Sie den Anforderungstyp als „HEAD“ anstelle von „GET“ festlegen, werden nur Header zurückgegeben, nicht der Dokumententext.

huc.setRequestMethod("HEAD");

Wenn der Tester die connect() -Methode aufruft, wird die tatsächliche Verbindung zur URL hergestellt und die HTTP-Anforderung gesendet.

huc.connect();

5. Validate Links

Verwenden Sie die Methode getResponseCode(), um den HTTP-Antwortcode für die zuvor gesendete HTTP-Anforderung abzurufen.

respCode = huc.getResponseCode();

Überprüfen Sie den Linkstatus (defekt oder nicht) basierend auf dem Antwortcode

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

Das Auffinden defekter Links in Selenium ist ein wesentlicher Bestandteil der Website-Entwicklung und des Testens. Mithilfe der in diesem Artikel beschriebenen Methode können Tester fehlerhafte Links schnell und korrekt identifizieren. Das Zulassen defekter Links in die Produktionsphase würde die Benutzererfahrung erheblich beeinträchtigen und muss mit äußerster Gründlichkeit verhindert werden. Aus diesem Grund ist das Wissen, wie man defekte Links in Selenium testet, ein wichtiger Teil des Toolkits eines Testers.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.