cum să găsiți legături rupte în Selenium
î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
- colectați toate linkurile prezente pe o pagină web pe baza etichetei <a>
- trimiteți solicitarea HTTP pentru fiecare link
- Verificați codul de răspuns HTTP
- determinați dacă linkul este valid sau rupt pe baza răspunsului HTTP cod
- 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.