6 lutego, 2022

jak znaleźć uszkodzone linki w Selenium

spis treści

zanim omówimy, jak znaleźć uszkodzone linki za pomocą Selenium WebDriver, zajmijmy się bardziej fundamentalnym pytaniem.

co to są Niedziałające linki?

na początek link to obiekt HTML, który umożliwia użytkownikom migrację z jednej strony internetowej do drugiej po kliknięciu na nią. Jest to środek do poruszania się między różnymi stronami internetowymi.

zepsuty link, nazywany też często martwym linkiem, to taki, który nie działa tzn. nie przekierowuje na stronę, do której ma być przeznaczona. Zwykle dzieje się tak, ponieważ strona internetowa lub konkretna strona internetowa jest wyłączona lub nie istnieje. Gdy ktoś kliknie uszkodzony link, wyświetlany jest komunikat o błędzie.

uszkodzone linki mogą istnieć z powodu jakiegoś błędu serwera, który z kolei powoduje awarię odpowiedniej strony i nie jest wyświetlany. Prawidłowy adres URL będzie miał kod statusu HTTP 2XX. Uszkodzone łącza, które są zasadniczo nieprawidłowymi żądaniami HTTP, mają kody statusu 4xx i 5xx.

kod statusu 4xx odnosi się do błędu po stronie klienta, podczas gdy kod statusu 5xx zwykle wskazuje na błąd odpowiedzi serwera.

kody statusu HTTP dla uszkodzonych linków

kod statusu HTTP definicja
400 (Bad Request) serwer nie może przetworzyć żądania, ponieważ adres URL jest nieprawidłowy
400 (Bad Request-zły Host) serwer nie może przetworzyć żądania, ponieważ nazwa hosta jest nieprawidłowa
400 (Bad Request-zły URL): serwer nie może przetworzyć żądania, ponieważ adres URL ma nieprawidłowy format; brakujące znaki, takie jak nawiasy, ukośniki itp.
400 (Bad Request – Empty) odpowiedź zwrócona przez serwer jest pusta bez zawartości & brak kodu odpowiedzi
400 (Bad Request-Timeout) żądania HTTP zostały przekroczone
400 (Bad Request-Reset) serwer nie jest w stanie przetworzyć żądania, ponieważ jest zajęty przetwarzaniem innych żądań lub został źle skonfigurowany przez właściciela witryny
404 (Nie znaleziono strony) strona nie jest dostępna na serwerze
403 (zabronione) Serwer odmawia spełnienia żądanie autoryzacji jest wymagane
410 (Gone) strona zniknęła. Kod ten jest trwalszy niż 404
408 (Request Time Out) serwer ma czas oczekiwania na żądanie.
503 (Usługa niedostępna) serwer jest tymczasowo przeciążony i nie może przetworzyć żądania

po co sprawdzać Niedziałające linki w Selenium?

jeśli użytkownik kliknie uszkodzony link, zostanie przekierowany na stronę błędu. To oczywiście przyczynia się do sub-par doświadczenia użytkownika. Niedziałające linki nie mają na celu posiadania strony w pierwszej kolejności, ponieważ użytkownicy nie mogą znaleźć informacji lub usługi, której szukają.

każdy link na stronie musi być przetestowany, aby upewnić się, że działa zgodnie z oczekiwaniami. Jednak biorąc pod uwagę, że większość stron internetowych ma setki (czasami tysiące) linków wymaganych do ich działania, ręczne testowanie każdego linku wymagałoby nadmiernej ilości czasu, wysiłku i zasobów. Co więcej, z automatycznym testowaniem selenu jako opcja, byłoby to całkowicie niepotrzebne.

Czytaj Więcej: Jak robić zrzuty ekranu w Selenium

typowe przyczyny przerwanych linków

  • 404 Nie znaleziono strony – docelowa strona internetowa została usunięta przez właściciela
  • 400 złe żądanie – serwer nie może przetworzyć żądania HTTP wywołanego przez łącze, ponieważ żądany adres URL jest nieprawidłowy
  • ze względu na ustawienia zapory użytkownika, przeglądarka nie może uzyskać dostępu do docelowej strony internetowej
  • link jest błędnie napisany

jak zidentyfikować niedziałające linki w Selenium WebDriver

aby sprawdzić niedziałające linki w selenium, Proces jest prosty. Na stronie internetowej hiperłącza są implementowane za pomocą znacznika HTML Anchor (<a>). Wszystko, co skrypt musi zrobić, to zlokalizować każdy znacznik zakotwiczenia na stronie internetowej, uzyskać odpowiednie adresy URL i uruchomić łącza, aby sprawdzić, czy któryś z nich nie jest uszkodzony.

wykonaj następujące kroki, aby zidentyfikować uszkodzone linki w Selenium

  1. Zbierz wszystkie linki obecne na stronie internetowej na podstawie <a> tagu
  2. Wyślij żądanie HTTP dla każdego linku
  3. Sprawdź kod odpowiedzi HTTP
  4. Określ, czy link jest poprawny, czy uszkodzony na podstawie HTTP kod odpowiedzi
  5. powtórz proces dla wszystkich przechwyconych linków w pierwszym kroku

jeśli zastanawiasz się, jak znaleźć uszkodzone obrazy za pomocą Selenium WebDriver, użyj tego samego procesu.

Czytaj Więcej: Jak wykonać podwójne kliknięcie w Selenium

znalezienie uszkodzonych linków w Selenium: przykład

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

Uruchom testy Selenium na prawdziwych urządzeniach za darmo

przejdźmy przez kod, aby lepiej zrozumieć jego funkcjonalność.

1. Importuj Pakiety

Importuj poniższy pakiet wraz z pakietami domyślnymi:

import java.net.HttpURLConnection;

metody zawarte w tym pakiecie umożliwiają testerowi wysyłanie żądań HTTP i przechwytywanie kodów odpowiedzi HTTP, gdy są one zwracane przez kod.

2. Zbierz wszystkie linki na stronie

Znajdź wszystkie linki na stronie i umieść je na liście:

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

uzyskaj Iterator, aby poruszać się po liście linków:

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

3: identyfikacja i Walidacja adresów URL

ten krok polega na sprawdzeniu, czy określony adres URL należy do domeny innej firmy lub czy jest pusty/null.

poniższy kod pobierze href znacznika kotwicy i zapisze go w zmiennej URL.

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

jeśli adres URL jest równy null lub pusty, pomiń kolejne kroki.

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

jeśli adres URL należy do domeny głównej, Kontynuuj. Jeśli należy do domeny innej firmy, pomiń kolejne kroki.

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

4. Metody Send HTTP request

w klasie HttpURLConnection będą wysyłać żądania HTTP i przechwytywać kod odpowiedzi HTTP. Dlatego wyjście metody openConnection () (URLConnection) jest typu rzucanego na HttpURLConnection.

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

jeśli testerzy ustawią typ żądania jako „HEAD” zamiast „GET”, zwracane będą tylko nagłówki, a nie treść dokumentu.

huc.setRequestMethod("HEAD");

gdy tester wywołuje metodę connect (), nawiązywane jest rzeczywiste połączenie z adresem URL i wysyłane jest żądanie HTTP.

huc.connect();

5. Sprawdź poprawność linków

użyj metody getResponseCode (), aby uzyskać kod odpowiedzi HTTP dla wcześniej wysłanego żądania HTTP.

respCode = huc.getResponseCode();

Sprawdź status linku (zepsuty lub nie) na podstawie kodu odpowiedzi

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

znalezienie niedziałających linków w Selenium jest integralną częścią tworzenia i testowania strony internetowej. Korzystając z metody opisanej w tym artykule, testerzy mogą szybko i poprawnie zidentyfikować nieprawidłowe linki. Umożliwienie przejścia uszkodzonych łączy na etap produkcji poważnie zaszkodziłoby użytkownikowi i należy temu zapobiegać z najwyższą dokładnością. Dlatego wiedza o tym, jak testować uszkodzone linki w Selenium, jest ważną częścią zestawu narzędzi testera.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.