februari 6, 2022

hoe gebroken links te vinden in Selenium

inhoudsopgave

voordat we bespreken hoe gebroken links te vinden met Selenium WebDriver, laten we een meer fundamentele vraag stellen.

Wat zijn verbroken Links?

om te beginnen is een link Een HTML-object dat gebruikers in staat stelt om van de ene webpagina naar de andere te migreren wanneer ze erop klikken. Het is een middel om te navigeren tussen verschillende webpagina ‘ s op het internet.

een verbroken link, ook wel een dode link genoemd, is een link die niet werkt, d.w.z. niet omleiden naar de webpagina het is bedoeld om. Dit gebeurt meestal omdat de website of bepaalde webpagina down is of niet bestaat. Wanneer iemand op een verbroken link klikt, wordt een foutmelding weergegeven.

gebroken links kunnen bestaan als gevolg van een soort serverfout, die op zijn beurt zorgt voor een storing in de betreffende pagina en niet wordt weergegeven. Een geldige URL heeft een 2XX HTTP statuscode. Gebroken links, die in wezen ongeldige HTTP-verzoeken hebben 4xx en 5xx statuscodes.

de 4xx statuscode verwijst naar een client-side fout, terwijl de 5xx statuscode meestal verwijst naar een server response error.

HTTP-statuscodes voor verbroken Links

HTTP-statuscode definitie
400 (Ongeldige aanvraag) Server kan verzoek niet verwerken omdat URL onjuist is
400 (Ongeldige aanvraag-ongeldige Host) Server kan verzoek niet verwerken omdat hostnaam ongeldig is
400 (Bad Request-Bad URL): Server kan verzoek niet verwerken omdat de URL een onjuist formaat heeft; ontbrekende tekens zoals haakjes, schuine strepen, enz.
400 (Bad Request – Lege) Reactie die wordt geretourneerd door de server is leeg, zonder inhoud & geen antwoord code
400 (Bad Request – Time-out) HTTP-verzoeken time-out
400 (Bad Request – Reset) Server is niet in staat om de aanvraag te verwerken, zoals het bezig is met de verwerking andere verzoeken of is niet correct geconfigureerd door de eigenaar van de site
404 (Pagina Niet Gevonden) Pagina is niet beschikbaar op de server
403 (Verboden) Server weigert te voldoen aan de verzoek als autorisatie is vereist
410 (verdwenen) pagina is verdwenen. Deze code is meer permanent dan 404
408 (verzoek Time-Out) Server heeft time-out in afwachting van het verzoek.
503 (Service niet beschikbaar) Server is tijdelijk overbelast en kan de aanvraag niet verwerken

waarom controleren op gebroken Links in Selenium?

als een gebruiker op een verbroken link klikt, wordt deze naar een foutpagina geleid. Dit draagt uiteraard bij aan sub-par user experience. Gebroken links verslaan het doel van het hebben van de website in de eerste plaats omdat gebruikers de informatie of dienst die ze zoeken niet kunnen vinden.

elke link op een website moet worden getest om ervoor te zorgen dat deze naar verwachting functioneert. Echter, gezien het feit dat de meeste websites hebben honderden (soms, duizenden) van links die nodig zijn om ze te laten werken, handmatig testen van elke link zou excessieve hoeveelheden tijd, moeite en middelen vereisen. Bovendien, met geautomatiseerde Selenium testen als een optie, zou het volledig onnodig zijn.

Lees Meer: Hoe om Screenshots te nemen in Selenium

Voorkomende Redenen voor Gebroken Links

  • 404 Pagina Niet Gevonden – De bestemming van het web pagina is verwijderd door de eigenaar
  • 400 Bad Request – De server kunnen niet worden verwerkt door de HTTP-aanvraag geactiveerd door op de link omdat het URL-adres gevraagd, is verkeerd
  • Door de gebruiker de instellingen van de firewall, de browser kan geen toegang krijgen tot de bestemming web pagina
  • De link is verkeerd gespeld

Hoe te identificeren verbroken koppelingen Selenium WebDriver

controleer gebroken links in Selenium, het proces is eenvoudig. Op een webpagina worden hyperlinks geà mplementeerd met behulp van de html-anker (<a>) tag. Het enige wat het script hoeft te doen is om elke anker tag op een webpagina te vinden, krijgen de bijbehorende URL ‘ s, en lopen door de links om te controleren of een van hen zijn gebroken.

gebruik de volgende stappen om gebroken links in Selenium

  1. Verzamel alle links op een webpagina gebaseerd op de <a> tag
  2. stuur HTTP-verzoek voor elke link
  3. controleer de HTTP-antwoordcode
  4. bepaal of de link geldig of verbroken is op basis van de HTTP-antwoordcode
  5. herhaal het proces voor alle links vastgelegd met de eerste stap

als u zich afvraagt hoe u gebroken afbeeldingen kunt vinden met Selenium Webdriver, gebruik dan hetzelfde proces.

Lees Meer: Hoe Dubbelklik in Selenium

het vinden van gebroken Links in Selenium: voorbeeld

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

Seleniumtests uitvoeren op echte apparaten gratis

laten we de code doornemen voor een beter begrip van de functionaliteit ervan.

1. Pakketten importeren

het onderstaande pakket importeren samen met standaard pakketten:

import java.net.HttpURLConnection;

de methoden in dit pakket staat de tester toe om HTTP-verzoeken te verzenden en HTTP-antwoordcodes vast te leggen wanneer ze door de code worden geretourneerd.

2. Verzamel alle links op de webpagina

Zoek alle links op de webpagina en plaats ze in een lijst:

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

verkrijg Iterator om door de lijst met links te gaan:

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

3: Identificeer en valideer URL ‘ s

deze stap gaat over het controleren of een bepaalde URL behoort tot een domein van derden of als het leeg/null is.

de onderstaande code zal de href van de anker tag ophalen en opslaan in de URL variabele.

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

als de URL null of leeg is, slaat u hierna de stappen over.

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

als de URL tot het hoofddomein behoort, ga dan verder. Als het tot een domein van derden behoort, slaat u hierna de stappen over.

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

4. Stuur HTTP-aanvraag

methoden in de httpurlconnection-klasse zullen HTTP-aanvragen verzenden en de HTTP-antwoordcode vastleggen. Daarom is de output van openConnection () methode (URLConnection) type gegoten naar HttpURLConnection.

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

als testers het aanvraagtype instellen als ” HEAD “in plaats van” GET”, zullen alleen headers worden geretourneerd, niet de documenttekst.

huc.setRequestMethod("HEAD");

wanneer de tester de methode connect() aanroept, wordt de daadwerkelijke verbinding met de URL tot stand gebracht en wordt het HTTP-verzoek verzonden.

huc.connect();

5. Koppelingen valideren

gebruik de methode getResponseCode () om de HTTP-antwoordcode te verkrijgen voor het eerder verzonden HTTP-verzoek.

respCode = huc.getResponseCode();

linkstatus controleren (al dan niet verbroken) op basis van de responscode

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

het vinden van verbroken links in Selenium is een integraal onderdeel van de ontwikkeling en het testen van websites. Door de in dit artikel beschreven methode te gebruiken, kunnen testers defecte koppelingen snel en correct identificeren. Het toestaan van gebroken links om door te gaan in de productiefase zou ernstige schade aan de gebruikerservaring, en moet worden voorkomen met extreme grondigheid. Dit is de reden waarom weten hoe om te testen gebroken links in Selenium is een belangrijk onderdeel van een tester toolkit.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.