web-dev-qa-db-fra.com

Vérification de HttpResponse OK (200) avec Selenium WebDriver

J'utilise Selenium Remote WebDriver. J'ai lu tous les liens du fichier csv et lance un test sur ces liens. Mais parfois, j'obtiens une réponse 404.

Existe-t-il un moyen dans Selenium WebDriver de vérifier que nous obtenons une réponse HTTP 200?

21
Aniruddha

Il n'y a aucun moyen d'obtenir des codes d'état HTTP directement dans l'API WebDriver. Il s'agit d'une demande de fonctionnalité de longue date , qui sera probablement jamais implémentée dans le projet. La bonne solution à votre problème est de configurer votre navigateur pour utiliser un proxy qui peut intercepter et enregistrer le trafic réseau et demander à votre code ce proxy pour le résultat que vous recherchez.

Bien sûr, si tout ce qui vous intéresse est de vérifier un lien pour vous assurer qu'il renvoie un code d'état 200, vous pouvez facilement utiliser une bibliothèque client HTTP dans la langue que vous souhaitez pour naviguer vers le lien. Il n'est pas nécessaire d'utiliser WebDriver, sauf si vous devez manipuler la page résultante d'une manière ou d'une autre.

29
JimEvans

avant d'utiliser Selenium, vous pouvez utiliser quelque chose comme:

public static boolean linkExists(String URLName){
    try {
      HttpURLConnection.setFollowRedirects(false);
      HttpURLConnection con =
         (HttpURLConnection) new URL(URLName).openConnection();
      con.setRequestMethod("HEAD");
      return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e) {
       e.printStackTrace();
       return false;
    }
  }

L'utiliser de cette manière:

WebDriver driver = new FirefoxDriver();
for(String url : csvArray){
   if(linkExists(url)){
      driver.get(url);
            .
            .
            .
   }
}
3
JackTurky

Notre site a une page d'erreur personnalisée pour 404 réponses. Le titre de la page sur cette page indique "404 - Page non trouvée". J'utilise driver.Title et vérifie le texte "not found".

En utilisant C #, j'ai écrit ce qui suit:

// Check for 404 page:
var pageNotFoundTitleText = "not found";
if (driver.Title.ToLower().Contains(pageNotFoundTitleText)) throw new Exception("### 404 - Page Not found: " + link);
1
Jason Williams