jak najít nefunkční odkazy v selenu
než budeme diskutovat o tom, jak najít nefunkční odkazy pomocí selenu WebDriver, pojďme řešit zásadnější otázku.
co jsou nefunkční odkazy?
nejprve je odkaz objekt HTML, který umožňuje uživatelům migrovat z jedné webové stránky na druhou, když na ni kliknou. Je to prostředek pro navigaci mezi různými webovými stránkami na internetu.
nefunkční odkaz, často nazývaný také mrtvý odkaz, je ten, který nefunguje, tj. není přesměrován na webovou stránku, na kterou je určen. K tomu obvykle dochází, protože web nebo konkrétní webová stránka je nefunkční nebo neexistuje. Když někdo klikne na nefunkční odkaz, zobrazí se chybová zpráva.
nefunkční odkazy mohou existovat kvůli nějaké chybě serveru, která zase způsobí poruchu odpovídající stránky a nezobrazí se. Platná adresa URL bude mít stavový kód 2XX HTTP. Nefunkční odkazy, které jsou v podstatě neplatnými požadavky HTTP, mají stavové kódy 4xx a 5xx.
stavový kód 4xx označuje chybu na straně klienta, zatímco stavový kód 5xx obvykle označuje chybu odpovědi serveru.
HTTP stavové kódy pro nefunkční odkazy
stavový kód HTTP | definice |
---|---|
400 (chybný požadavek) | Server nelze zpracovat požadavek, protože URL je nesprávná |
400 (Bad Request-Bad Host) | Server nelze zpracovat požadavek, protože název hostitele je neplatný |
400 (Bad Request-Bad URL): | Server nemůže zpracovat požadavek, protože Adresa URL je nesprávného formátu; chybějící znaky jako závorky, lomítka atd. |
400 (Bad Request-Empty) | odpověď vrácená serverem je prázdná bez obsahu & bez kódu odpovědi |
400 (Bad Request-Timeout) | HTTP požadavky vypršely |
400 (Bad Request-Reset) | Server není schopen zpracovat požadavek, protože je zaneprázdněn zpracováním jiných požadavků nebo byl nesprávně nakonfigurován vlastníkem webu |
404 (Stránka nebyla nalezena) | stránka není na Serveru k dispozici |
403 (Zakázáno) | Server odmítá splnit žádost jako autorizace je vyžadována |
410 (Gone) | stránka je pryč. Tento kód je trvalejší než 404 |
408 (Request Time Out) | Server má časový limit čekání na požadavek. |
503 ( | Server je dočasně přetížen a nemůže zpracovat požadavek |
proč kontrolovat nefunkční odkazy v selenu?
pokud uživatel klikne na nefunkční odkaz, bude přesměrován na chybovou stránku. To samozřejmě přispívá k dílčímu uživatelskému zážitku. Nefunkční odkazy porazit účel mít webové stránky na prvním místě, protože uživatelé nemohou najít informace nebo služby, které hledají.
každý odkaz na webové stránce musí být testován, aby se zajistilo, že funguje podle očekávání. Vzhledem k tomu, že většina webových stránek má stovky (někdy tisíce) odkazů potřebných k tomu, aby fungovaly, ruční testování každého odkazu by vyžadovalo nadměrné množství času, úsilí a zdrojů. Navíc, s možností automatického testování selenu, bylo by to zcela zbytečné.
Více: Jak pořizovat snímky obrazovky v selenu
běžné důvody pro nefunkční odkazy
- 404 Stránka nenalezena – Cílová webová stránka byla odstraněna vlastníkem
- 400 Špatný požadavek-server nemůže zpracovat požadavek HTTP spuštěný odkazem, protože požadovaná adresa URL je nesprávná
- vzhledem k nastavení brány firewall uživatele nemá prohlížeč přístup na cílovou webovou stránku
- odkaz je chybně napsán
jak identifikovat nefunkční odkazy v Selenium WebDriver
Chcete-li zkontrolovat nefunkční odkazy v selenu, proces je v pořádku.jednoduché. Na webové stránce jsou hypertextové odkazy implementovány pomocí značky HTML Anchor (<a>). Vše, co skript musí udělat, je najít každou značku kotvy na webové stránce, získat odpovídající adresy URL a projít odkazy, abyste zkontrolovali, zda je některá z nich rozbitá.
pomocí následujících kroků identifikujte nefunkční odkazy v selenu
- shromážděte všechny odkazy přítomné na webové stránce na základě značky <a>
- odeslat požadavek HTTP pro každý odkaz
- ověřte kód odpovědi HTTP
- Určete, zda je odkaz platný nebo nefunkční na základě kódu odpovědi HTTP
- opakujte postup pro všechny odkazy zachycené prvním krokem
pokud vás zajímá, jak najít rozbité obrázky pomocí Selenium WebDriver, použijte stejný postup.
Více: Jak provést dvojité kliknutí v selenu
nalezení nefunkčních odkazů v selenu: příklad
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();}}
spusťte testy selenu na skutečných zařízeních zdarma
pojďme projít kódem pro bližší pochopení jeho funkčnosti.
1. Importovat balíčky
importovat balíček níže spolu s výchozími balíčky:
import java.net.HttpURLConnection;
metody v tomto balíčku umožňují testeru odesílat požadavky HTTP a zachytit kódy odezvy HTTP, když jsou vráceny kódem.
2. Shromážděte všechny odkazy na webové stránce
Najděte všechny odkazy na webové stránce a umístěte je do seznamu:
List<WebElement> links = driver.findElements(By.tagName("a"));
získat iterátor pro pohyb v seznamu odkazů:
Iterator<WebElement> it = links.iterator();
3: Identifikujte a ověřte adresy URL
tento krok se týká kontroly, zda určitá adresa URL patří do domény třetí strany nebo zda je prázdná / null.
níže uvedený kód načte href značky kotvy a uloží ji do proměnné URL.
url = it.next().getAttribute("href");
pokud je adresa URL nulová nebo prázdná, přeskočte následující kroky.
if(url == null || url.isEmpty()){System.out.println("URL is either not configured for anchor tag or it is empty");continue;}
pokud Adresa URL patří do hlavní domény, pokračujte. Pokud patří do domény třetí strany, přeskočte kroky poté.
if(!url.startsWith(homePage)){System.out.println("URL belongs to another domain, skipping it.");continue;}
4. Odeslat požadavek HTTP
metody ve třídě HttpURLConnection odešlou požadavky HTTP a zachytí kód odpovědi HTTP. Proto je výstup metody openConnection () (URLConnection) typu castted to HttpURLConnection.
huc = (HttpURLConnection)(new URL(url).openConnection());
pokud testeři nastaví typ požadavku jako“ HEAD „namísto “ GET“, budou vráceny pouze záhlaví, nikoli tělo dokumentu.
huc.setRequestMethod("HEAD");
když tester vyvolá metodu connect (), vytvoří se skutečné připojení k URL a odešle se požadavek HTTP.
huc.connect();
5. Ověření odkazů
pomocí metody getResponseCode () získáte kód odpovědi HTTP pro dříve odeslaný požadavek HTTP.
respCode = huc.getResponseCode();
Zkontrolujte stav odkazu (nefunkční nebo ne) na základě kódu odpovědi
if(respCode >= 400){System.out.println(url+" is a broken link");}else{System.out.println(url+" is a valid link");}
nalezení nefunkčních odkazů v selenu je nedílnou součástí vývoje a testování webových stránek. Pomocí metody popsané v tomto článku mohou testeři rychle a správně identifikovat nefunkční odkazy. Umožnění průchodu nefunkčních spojů do fáze výroby by vážně poškodilo uživatelský dojem a musí být zabráněno extrémní důkladností. To je důvod, proč vědět, jak testovat nefunkční odkazy v selenu, je důležitou součástí sady nástrojů testeru.