februarie 6, 2022

cum să găsiți legături rupte în Selenium

cuprins

înainte de a discuta cum să găsiți legături rupte folosind Selenium WebDriver, să abordăm o întrebare mai fundamentală.

ce sunt legăturile rupte?

pentru început, un link este un obiect HTML care permite utilizatorilor să migreze de la o pagină web la alta atunci când fac clic pe ea. Este un mijloc de a naviga între diferite pagini web de pe internet.

o verigă ruptă, numită adesea și verigă Moartă, este una care nu funcționează, adică. nu redirecționează la pagina web este menit să. Acest lucru se întâmplă de obicei, deoarece site-ul sau pagina web special este în jos sau nu există. Când cineva face clic pe un link rupt, se afișează un mesaj de eroare.

legăturile rupte pot exista din cauza unui fel de eroare de server, care, la rândul său, determină funcționarea defectuoasă a paginii corespunzătoare și nu poate fi afișată. O adresă URL validă va avea un cod de stare HTTP 2XX. Legăturile rupte, care sunt în esență cereri HTTP nevalide, au coduri de stare 4xx și 5xx.

codul de stare 4xx se referă la o eroare din partea clientului, în timp ce codul de stare 5xx indică de obicei o eroare de răspuns a serverului.

coduri de stare HTTP pentru link-uri rupte

cod de stare HTTP definiție
400 (cerere proastă) serverul nu poate procesa cererea ca URL-ul este incorect
400 (Bad Request-Bad Host) serverul nu poate procesa cererea ca nume de gazdă este nevalid
400 (cerere proastă-URL rău): serverul nu poate procesa cererea, deoarece adresa URL are un format incorect; lipsesc caractere precum paranteze, slash-uri etc.
400 (cerere proastă-gol) răspunsul returnat de server este gol fără conținut & fără cod de răspuns
400 (cerere proastă-Timeout) cererile HTTP au expirat
400 (cerere proastă-Resetare) serverul nu poate procesa cererea, deoarece este ocupat cu procesarea altor solicitări sau a fost configurat greșit de proprietarul site-ului
404 (Pagina nu a fost găsită) pagina nu este disponibilă pe server
403 (interzis) serverul refuză să îndeplinească cerere ca autorizație este necesară
410 (plecat) pagina a dispărut. Acest cod este mai permanent decât 404
408 (cerere de expirare) serverul a expirat în așteptarea cererii.
503 (serviciu indisponibil) serverul este supraîncărcat temporar și nu poate procesa solicitarea

de ce să verificați legăturile rupte în seleniu?

dacă un utilizator face clic pe un link rupt, acesta va fi direcționat către o pagină de eroare. Acest lucru contribuie în mod evident la experiența utilizatorului sub-par. Link-uri rupte învinge scopul de a avea site-ul în primul rând, deoarece utilizatorii nu pot găsi informațiile sau serviciul pe care îl caută.

fiecare link de pe un site web trebuie testat pentru a se asigura că funcționează conform așteptărilor. Cu toate acestea, având în vedere că majoritatea site-urilor web au sute (uneori, mii) de linkuri necesare pentru a le face să funcționeze, testarea manuală a fiecărui link ar necesita cantități excesive de timp, efort și resurse. Mai mult, cu testarea automată a seleniului fiind o opțiune, ar fi complet inutilă.

Citește Mai Mult: Cum să faceți capturi de ecran în Selenium

motive comune pentru legăturile rupte

  • 404 Pagina web de destinație nu a fost găsită – pagina web de destinație a fost eliminată de proprietar
  • 400 Solicitare greșită – serverul nu poate procesa solicitarea HTTP declanșată de link, deoarece adresa URL solicitată este greșită
  • datorită setărilor firewall-ului utilizatorului, browserul nu poate accesa pagina web de destinație
  • linkul este scris greșit

cum să identificați legăturile rupte în Selenium WebDriver

pentru a verifica legăturile rupte în seleniu, procesul este simplu. Pe o pagină web, hyperlink-urile sunt implementate utilizând eticheta HTML Anchor (<a>). Tot scriptul trebuie să faceți este de a localiza fiecare etichetă ancora pe o pagină web, pentru a primi URL-urile corespunzătoare, și a alerga prin link-uri pentru a verifica dacă oricare dintre ele sunt rupte.

utilizați pașii următori pentru a identifica linkurile rupte în Selenium

  1. colectați toate linkurile prezente pe o pagină web pe baza etichetei <a>
  2. trimiteți solicitarea HTTP pentru fiecare link
  3. Verificați codul de răspuns HTTP
  4. determinați dacă linkul este valid sau rupt pe baza răspunsului HTTP cod
  5. repetați procesul pentru toate linkurile capturate cu primul pas

dacă vă întrebați cum să găsiți imagini rupte folosind selenium webdriver, utilizați același proces.

Citește Mai Mult: Cum se efectuează dublu clic în Selenium

găsirea legăturilor rupte în Selenium: exemplu

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

rulați testele Selenium pe dispozitive reale gratuit

să parcurgem codul pentru o înțelegere mai strânsă a funcționalității sale.

1. Importați pachetele

importați pachetul de mai jos împreună cu pachetele implicite:

import java.net.HttpURLConnection;

metodele din acest pachet permit testerului să trimită cereri HTTP și să capteze coduri de răspuns HTTP atunci când sunt returnate de cod.

2. Colectați toate linkurile de pe pagina web

găsiți toate linkurile de pe pagina web și plasați-le într-o listă:

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

obține Iterator pentru a vă deplasa prin lista de link-uri:

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

3: identificați și validați adresele URL

acest pas se referă la verificarea dacă o anumită adresă URL aparține unui domeniu terț sau dacă este goală/nulă.

codul de mai jos va prelua href-ul etichetei de ancorare și îl va stoca în variabila URL.

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

dacă adresa URL este nulă sau goală, săriți pașii după aceasta.

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

dacă adresa URL aparține domeniului principal, continuați. Dacă aparține unui domeniu terț, săriți pașii după aceasta.

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

4. Trimite cerere HTTP

metode în clasa HttpURLConnection va trimite cereri HTTP și captura codul de răspuns HTTP. Prin urmare, ieșirea openConnection() metoda (URLConnection) este de tip turnat la HttpURLConnection.

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

dacă testerii stabilesc tipul de solicitare ca „cap” în loc de „Obține”, vor fi returnate doar anteturile, nu corpul documentului.

huc.setRequestMethod("HEAD");

când testerul invocă metoda connect (), conexiunea reală la URL-ul este stabilit și cererea HTTP este trimis.

huc.connect();

5. Validați legăturile

utilizați metoda getResponseCode() pentru a obține codul de răspuns HTTP pentru solicitarea HTTP trimisă anterior.

respCode = huc.getResponseCode();

Verificați starea linkului (rupt sau nu) pe baza codului de răspuns

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

găsirea legăturilor rupte în Selenium este o parte integrantă a dezvoltării și testării site-ului web. Folosind metoda descrisă în acest articol, testerii pot identifica rapid și corect legăturile care funcționează defectuos. Permiterea trecerii legăturilor rupte în etapa de producție ar deteriora grav experiența utilizatorului și trebuie prevenită cu o atenție extremă. Acesta este motivul pentru care a ști cum să testați legăturile rupte în seleniu este o parte importantă a setului de instrumente al unui tester.

Lasă un răspuns

Adresa ta de email nu va fi publicată.