Muchas veces nos enfrentamos a hipervínculos rotos en sitios web. Hoy aprendemos a encontrar enlaces rotos usando Selenio. Antes de pasar a estos temas, aprendamos las preguntas fundamentales.
¿Qué son los Enlaces Rotos?
Un enlace roto (también conocido como enlace muerto o enlace roto) es un enlace en un sitio web que no funciona (es decir., no redirige a la página a la que está destinado) debido a una o más de las siguientes razones.
- La página web de destino ya no está disponible (sin conexión o movida permanentemente).
- La página web de destino se ha movido sin agregar una redirección.
- Se cambia la estructura de URL(enlaces permanentes) de una página web.
- Una URL no válida (mal escrita, mal escrita, etc.) se menciona en la página web de origen.
- Debido a cortafuegos o restricción de geolocalización.
Una URL que tiene un código de estado HTTP 2xx es válida y las URL que tienen códigos de estado HTTP 4xx y 5xx no son válidas. Si se enfrenta al código de estado 4xx, que se debe a un error del lado del cliente y el código de estado es 5xx, lo que significa que se debe a un error de respuesta del servidor.
¿Por qué buscar Enlaces Rotos?
Los servidores web devuelven un mensaje de error cuando un usuario intenta acceder a un enlace roto. Los usuarios serán dirigidos a una página de error cuando hagan clic en un enlace roto. Esto conduce a una mala experiencia de usuario. Tenemos que manejarlos continuamente y eliminar cualquier enlace roto existente en nuestro sitio web. Podemos hacer este proceso manualmente. La mayoría de los sitios web tienen cientos o miles de enlaces y no es posible probarlos manualmente. Requiere mucho tiempo, recursos y esfuerzo. En lugar de inspeccionar manualmente, podemos aprovechar Selenium WebDriver para probar enlaces rotos.
No te pierdas: Pruebas manuales vs Pruebas de automatización: Diferencias Todos deben saber
Cómo verificar los enlaces e imágenes rotos
Siga los pasos a continuación para verificar los enlaces rotos.
- Todos los enlaces están etiquetados con enlace < a> o imagen < img> en una página web. Recopile los enlaces basados en etiquetas < a>, <img>
- Envíe una solicitud HTTP y lea el código de respuesta HTTP de cada enlace.
De esta manera, puede averiguar si el enlace es válido o no en función de los códigos de respuesta.
Encuentra enlaces rotos Usando Selenium WebDriver
Uno de los casos de prueba clave es encontrar enlaces rotos en una página web. Debido a la existencia de enlaces rotos, la reputación de su sitio web se daña y habrá un impacto negativo en su negocio. Es obligatorio encontrar y arreglar todos los enlaces rotos antes del lanzamiento. Si un enlace no funciona, nos enfrentamos a un mensaje como 404 Página No encontrada.
Veamos algunos de los códigos de estado HTTP.
El siguiente código obtiene todos los enlaces de un sitio web determinado (es decir, Material de prueba de software).com) usando comandos de WebDriver y lee el estado de cada enlace href con la ayuda de la clase HttpURLConnection.
Haga clic aquí para obtener más información sobre HttpURLConnection
Se da una explicación clara en la sección de comentarios dentro del propio programa. Por favor, repasalo para entender el flujo.
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
|
paquete de 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:\\Selenium Environment \ \ Drivers \ \ geckodriver.exe»);
Controlador de WebDriver = nuevo FirefoxDriver();
//Maximice el controlador del navegador
.gestionar().ventana().maximizar();
//Espera implícita de 10 segundos
controlador.gestionar().tiempos de espera().Espera implícita (10, Unidad de tiempo.SEGUNDOS);
//Para lanzar softwaretestingmaterial.com
controlador.obtener(«https://www.softwaretestingmaterial.com»);
//Espere 5 segundos
Hilo.dormir(5000);
/ / Se usó el método tagName para recopilar la lista de elementos con tagName» a »
/ / findElements: para encontrar todos los elementos con los que se encuentra en la página actual. Devuelve una lista de todos los webelements o una lista vacía si nada coincide con
List<WebElement> links = driver.findElements (By.tagName («a»));
//Para imprimir el número total de enlaces
del sistema.fuera.println («Total links are» + links.tamaño());
//se utiliza para bucle a
para enlaces (int i=0; i<.size (); i++) {
WebElement element = enlaces . get(i);
/ / Usando el atributo «href», podríamos obtener la url del enlace requerido
String url=element.getAttribute («href»);
//llamando al método verifyLink() aquí. Pasando el parámetro como url que recogimos en el enlace anterior
/ / Vea la funcionalidad detallada del método verifyLink(url) a continuación
verifyLink (url);
}
}
// La siguiente función verifyLink (String urlLink) verifica cualquier enlace roto y devuelve el estado del servidor.
verifyLink de vacío estático público(Enlace urinario de cadena) {
//A veces podemos enfrentarnos a la excepción «java.net.MalformedURLException». Mantenga el código en el bloque try catch para continuar el análisis de enlaces rotos
try {
//Use URL Class: Cree el objeto de la clase URL y pase el urlLink como parámetro
URL link = nueva URL ( urlLink);
// Cree una conexión utilizando el objeto URL(es decir, enlace)
HttpURLConnection httpConn =(HttpURLConnection)enlace.Conexión abierta();
//Establezca el tiempo de espera para 2 segundos
httpConn.setConnectTimeout(2000);
//conexión mediante el método connect
httpConn.conectar();
//usa getResponseCode () para obtener el código de respuesta.
if (httpConn.getResponseCode()== 200) {
Sistema.fuera.println (urlLink+ » – » +httpConn.getResponseMessage());
}
if (httpConn.getResponseCode()== 404) {
Sistema.fuera.println (urlLink+ » – » +httpConn.getResponseMessage());
}
}
//El método getResponseCode devuelve = IOException: si se produjo un error al conectarse al servidor.
catch (Exception e) {
//e.printStackTrace();
}
}
}
|
Si este post en «Encontrar Enlaces Rotos de Usar Selenium WebDriver» fue capaz de ayudar, entonces no te importa compartir con los demás.
Si no eres un lector habitual de SoftwareTestingMaterial.com entonces, le recomiendo que se registre para recibir el boletín de noticias por correo electrónico gratuito utilizando el siguiente enlace.