Hoe u alle/gebroken links kunt vinden met Selenium Webdriver

Wat zijn gebroken links?

Gebroken links zijn links of URL's die niet bereikbaar zijn. Ze zijn mogelijk niet beschikbaar of werken niet vanwege een serverfout

Een URL heeft altijd een status met 2xx die geldig is. Er zijn verschillende HTTP-statuscodes die verschillende doelen hebben. Voor een ongeldig verzoek is de HTTP-status 4xx en 5xx.

De klasse 4xx-statuscode is voornamelijk bedoeld voor fouten aan de clientzijde en de klasse 5xx-statuscodes is voornamelijk bedoeld voor de serverreactiefout.

We kunnen hoogstwaarschijnlijk niet bevestigen of die link werkt of niet totdat we erop klikken en bevestigen.

Waarom zou je Gebroken links moeten controleren?

U moet er altijd voor zorgen dat er geen verbroken links op de site staan, omdat de gebruiker niet op een foutpagina terecht mag komen.

De fout treedt op als de regels niet correct worden bijgewerkt of als de gevraagde bronnen niet aanwezig zijn op de server.

Het handmatig controleren van links is een vervelende taak, omdat elke webpagina een groot aantal links kan hebben en het handmatige proces voor alle pagina's moet worden herhaald.

Een automatiseringsscript met Selenium dat het proces automatiseert, is een meer geschikte oplossing.

Hoe de gebroken links en afbeeldingen te controleren

Om de verbroken links te controleren, moet u de volgende stappen uitvoeren.

  1. Verzamel alle links op de webpagina op basis van: label.
  2. Verzend HTTP-verzoek voor de link en lees HTTP-antwoordcode.
  3. Zoek uit of de link geldig of verbroken is op basis van de HTTP-responscode.
  4. Herhaal dit voor alle vastgelegde links.

Code om de gebroken links op een webpagina te vinden

Hieronder vindt u de webstuurprogrammacode die onze use-case test: |__+_|

De code uitleggen Voorbeeld

Stap 1: Pakketten importeren

Importeer onderstaand pakket naast de standaardpakketten: |_+_|

Met behulp van de methoden in dit pakket kunnen we HTTP-verzoeken verzenden en HTTP-antwoordcodes van het antwoord vastleggen.

Stap 2: Verzamel alle links op de webpagina

Identificeer alle links op een webpagina en sla ze op in Lijst. |__+_|

Verkrijg Iterator om door de lijst te bladeren. |__+_|

Stap 3: URL identificeren en valideren

In dit deel zullen we controleren of de URL tot het domein van derden behoort of dat de URL leeg/null is.

Haal href van de ankertag op en sla deze op in de url-variabele. |__+_|

Controleer of URL null of Leeg is en sla de overige stappen over als aan de voorwaarde is voldaan. |__+_|

Controleer of de URL bij een hoofddomein of bij een derde partij hoort. Sla de resterende stappen over als het tot een domein van derden behoort. |__+_|

Stap 4: Verstuur een http-verzoek

De klasse HttpURLConnection heeft methoden om HTTP-verzoeken te verzenden en HTTP-responscode vast te leggen. De uitvoer van de openConnection()-methode (URLConnection) wordt dus getypeerd naar HttpURLConnection. |__+_|

We kunnen het verzoektype instellen op 'HEAD' in plaats van op 'GET'. Zodat alleen kopteksten worden geretourneerd en niet de hoofdtekst van het document. |__+_|

Bij het aanroepen van de methode connect() wordt de daadwerkelijke verbinding met de url tot stand gebracht en wordt het verzoek verzonden. |__+_|

Stap 5: Koppelingen valideren

Met de methode getResponseCode() kunnen we antwoordcode voor het verzoek krijgen |__+_|

Op basis van de responscode zullen we proberen de linkstatus te controleren. |__+_|

We kunnen dus alle links van webpagina's ophalen en afdrukken of links geldig of verbroken zijn.

Ik hoop dat deze tutorial je helpt bij het controleren van gebroken links met selenium.

Hoe krijg ik ALLE links van een webpagina

Een van de gebruikelijke procedures bij webtests is om te testen of alle links op de pagina werken. Dit kan gemakkelijk worden gedaan met behulp van een combinatie van de Java voor elke lus , zoekElementen () & Op.tagNaam('a') methode.

De methode findElements() retourneert een lijst met webelementen met tag a. Met behulp van een for-each-lus wordt elk element benaderd.

De WebDriver-code hieronder controleert elke link van de Mercury Tours-homepage om te bepalen welke werken en welke nog in aanbouw zijn. |__+_|

De uitvoer moet vergelijkbaar zijn met die hieronder aangegeven.

  • Toegang tot afbeeldingskoppelingen wordt gedaan met behulp van de methoden By.cssSelector() en By.xpath().
  • Probleemoplossen

    In een geïsoleerd geval kan de eerste link die door de code wordt geopend, de 'Home'-link zijn. In dat geval zal de actie driver.navigate.back() een blanco pagina tonen omdat de eerste actie het openen van een browser is. Het stuurprogramma kan niet alle andere links vinden in een lege browser. Dus IDE zal een uitzondering genereren en de rest van de code wordt niet uitgevoerd. Dit kan eenvoudig worden afgehandeld met behulp van een If-lus.