Molte volte ci troviamo di fronte collegamenti ipertestuali rotti sui siti web. Oggi impariamo come trovare collegamenti interrotti usando il selenio. Prima di passare a questi argomenti, impariamo le domande fondamentali.
Cosa sono i collegamenti interrotti?
Un link rotto (aka dead link o link marcisce) è un link su un sito web che non funziona (es., non reindirizza alla pagina a cui si intende, a causa di uno o più dei seguenti motivi.
- La pagina Web di destinazione non è più disponibile (offline o spostata in modo permanente).
- La pagina web di destinazione è stata spostata senza aggiungere un reindirizzamento.
- La struttura URL(permalink) di una pagina web viene modificata.
- Un URL non valido (ortografia errata, digitazione errata, ecc.) è menzionato nella pagina Web di origine.
- A causa di firewall o restrizioni di geolocalizzazione.
Un URL che ha un codice di stato HTTP 2xx è valido e gli URL hanno codici di stato HTTP 4xx e 5xx non sono validi. Se si affronta il codice di stato 4xx, è dovuto a un errore sul lato client e il codice di stato è 5xx, il che significa che è dovuto a un errore di risposta del server.
Perché verificare la presenza di collegamenti interrotti?
I server Web restituiscono un messaggio di errore quando un utente tenta di accedere a un collegamento interrotto. Gli utenti saranno indirizzati a una pagina di errore quando fanno clic su un collegamento interrotto. Questo porta ad una cattiva esperienza utente. Dobbiamo gestirli continuamente e rimuovere eventuali collegamenti interrotti esistenti sul nostro sito web. Possiamo fare questo processo manualmente. La maggior parte dei siti web ha centinaia o migliaia di link e testarli tutti manualmente non è possibile. Richiede tempo, risorse e sforzi enormi. Invece di ispezionare manualmente, possiamo sfruttare Selenium WebDriver per testare i collegamenti interrotti.
Da non perdere: Test manuale vs Test di automazione-Differenze Tutti dovrebbero sapere
Come verificare i collegamenti interrotti e le immagini
Segui i passaggi seguenti per verificare i collegamenti interrotti.
- Tutti i link sono contrassegnati con link < a>o immagine < img> su una pagina web. Raccogli i link in base ai tag <a >, < img >
- Invia richiesta HTTP e leggi il codice di risposta HTTP di ogni link.
In questo modo è possibile scoprire se il collegamento è valido o non valido in base ai codici di risposta.
Trova collegamenti interrotti usando Selenium WebDriver
Uno dei casi di test chiave è trovare collegamenti interrotti su una pagina web. A causa dell’esistenza di collegamenti interrotti, la reputazione del tuo sito web viene danneggiata e ci sarà un impatto negativo sulla tua attività. È obbligatorio trovare e correggere tutti i collegamenti interrotti prima del rilascio. Se un link non funziona, ci troviamo di fronte a un messaggio come 404 Pagina non trovata.
Vediamo alcuni dei codici di stato HTTP.
di Seguito codice recupera tutti i link di un sito internet (ad esempio, SoftwareTestingMaterial.com) utilizzando i comandi WebDriver e legge lo stato di ogni collegamento href con l’aiuto della classe HttpURLConnection.
Clicca qui per maggiori informazioni su HttpURLConnection
Data chiara spiegazione nella sezione commenti all’interno del programma stesso. Si prega di passare attraverso di essa per capire il flusso.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
pacchetto softwareTestingMaterial;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class BrokenLinks {
public static void main(String args) throws InterruptedException {
//Instantiating FirefoxDriver
System.setProperty(“webdriver.gecko.driver”, “D:\\ Ambiente selenio \ \ Driver \ \ geckodriver.exe”);
Driver WebDriver = nuovo FirefoxDriver();
//Massimizza il driver del browser
.gestire().finestra().massimizza();
//Attesa implicita per 10 secondi
driver.gestire().timeout().implicitlyWait (10, TimeUnit.SECONDI);
//Per lanciare softwaretestingmaterial.com
driver.prendi(“https://www.softwaretestingmaterial.com”);
//Attendere 5 secondi
Thread.sonno(5000);
//Utilizzato il metodo tagName per raccogliere l’elenco di elementi con tagName “a”
//findElements – per trovare tutti gli elementi con nella pagina corrente. Restituisce un elenco di tutti gli elementi web o un elenco vuoto se nulla corrisponde a
List < WebElement> links = driver.findElements(Da.tagName (“a”));
//Per stampare il numero totale di collegamenti
Sistema.fuori.println (“I collegamenti totali sono” + collegamenti.dimensione());
//usato per loop a
per(int i=0; i<collegamenti.dimensione (); i++) {
Elemento WebElement = collegamenti.ottieni(i);
//Usando l’attributo “href”, potremmo ottenere l’URL del link richiesto
String url=element.getAttribute (“href”);
//chiamando il metodo verifyLink () qui. Passando il parametro come url che abbiamo raccolto nel link sopra
/ / Vedere la funzionalità dettagliata del metodo verifyLink (url) sotto
verifyLink(url);
}
}
// La seguente funzione verifyLink (String urlLink) verifica eventuali collegamenti interrotti e restituisce lo stato del server.
public static void verifyLink(String urlLink) {
//a Volte ci troviamo ad affrontare “eccezione java.net.MalformedURLException”. Mantenere il codice nel blocco catch tenta di continuare l’anello rotto di analisi
try {
//Utilizzo URL Classe – Creare l’oggetto dell’URL di Classe e di passare il urlLink come parametro
collegamento URL = new URL(urlLink);
// Creare una connessione con URL oggetto (per esempio, link)
HttpURLConnection httpConn =(HttpURLConnection)link.Connessione aperta();
//Impostare il timeout per 2 secondi
httpConn.setConnectTimeout(2000);
//connetti usando il metodo di connessione
httpConn.connetti();
//utilizzare getResponseCode () per ottenere il codice di risposta.
se (httpConn.getResponseCode()== 200) {
Sistema.fuori.println(urlLink+ ” – ” +httpConn.getResponseMessage());
}
se (httpConn.getResponseCode()== 404) {
Sistema.fuori.println(urlLink+ ” – ” +httpConn.getResponseMessage());
}
}
//Il metodo getResponseCode restituisce = IOException-se si è verificato un errore durante la connessione al server.
catture (Eccezione e) {
//e. printStackTrace();
}
}
}
|
Se questo post su “Trovare collegamenti interrotti usando Selenium WebDriver” è stato in grado di aiutare, allora non importa condividerlo con gli altri.
Se non sei un lettore abituale di SoftwareTestingMaterial.com quindi ti consiglio vivamente di iscriverti alla newsletter gratuita tramite il link qui sotto.