es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Selenium con Python: Cómo verificar si una URL es válida

Tengo esta prueba funcional que obtiene una URL de un atributo href.

Pero ¿cómo puedo probar si es válida (es decir, 200/éxito y no 404)?

def test_card_links(self):
    """Hacer clic en la tarjeta, asegurarse de que la URL sea válida"""
    card_link = self.browser.find_element_by_css_selector('#app-scoop-panel a').get_attribute('href');
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para probar si la URL obtenida del atributo href es válida, se puede utilizar la biblioteca python-requests o urllib. Ambas bibliotecas proporcionan funciones para realizar solicitudes HTTP y comprobar el código de estado de la respuesta.

    Utilizando la biblioteca python-requests:

    import requests
    
    def test_card_links(self):
        """Hacer clic en la tarjeta y asegurarse de que la URL sea válida"""
        card_link = self.browser.find_element_by_css_selector('#app-scoop-panel a').get_attribute('href')
        response = requests.get(card_link)
        assert response.status_code == 200, f"La URL {card_link} no es válida. Se obtuvo una respuesta {response.status_code}"
    

    Utilizando la biblioteca urllib:

    from urllib import request, error
    
    def test_card_links(self):
        """Hacer clic en la tarjeta y asegurarse de que la URL sea válida"""
        card_link = self.browser.find_element_by_css_selector('#app-scoop-panel a').get_attribute('href')
        try:
            response = request.urlopen(card_link)
            assert response.status == 200, f"La URL {card_link} no es válida. Se obtuvo una respuesta {response.status}"
        except error.HTTPError as e:
            assert False, f"La URL {card_link} no es válida. Se obtuvo el siguiente error {e}"
    

    En ambos casos, primero obtenemos la URL del atributo href utilizando Selenium. Luego realizamos una solicitud o llamada HTTP a la URL utilizando la biblioteca correspondiente. Comprobamos el código de estado de la respuesta y verificamos que sea 200, lo que significa que es una URL válida. Si el código de estado no es 200, generamos un error de aserción con un mensaje personalizado que indica la URL y el código de estado o el error de respuesta.

Comments are closed.