Question

Je crée une série de tests Selenium pour une application web album. Je voudrais tester si une image est réellement affichée (elle contient des données d'image valide). Est-ce possible?

Était-ce utile?

La solution

Je fait face à cette situation semblable où le src de l'image est comme prévu, mais l'image ne soit pas affichée sur la page.

Vous pouvez vérifier si l'image est affichée ou non s'en utilisant le JavaScriptExcecutor.

Utilisez le code suivant - Faire passer le WebElement (image) -

 Object result = ((JavascriptExecutor) driver).executeScript(
   "return arguments[0].complete && "+
   "typeof arguments[0].naturalWidth != \"undefined\" && "+
   "arguments[0].naturalWidth > 0", image);

    boolean loaded = false;
    if (result instanceof Boolean) {
      loaded = (Boolean) result;
      System.out.println(loaded);
    }

Vous pouvez vérifier si l'image est effectivement chargée sur la page Web en faisant cela.

Autres conseils

Si vous utilisez Java, le sélénium a une méthode nommée eval ou ainsi. Vous donnez une chaîne javascript et il vous donne le résultat en tant que chaîne. Par exemple, vous pouvez essayer cela (une seule ligne):

var req = new XMLHttpRequest();
req.open('get', document.getElementById('imageid').src, false);
req.send(null);
req.status==200

Cela devrait retourner « true » pour l'état 200 ou « faux » pour autre chose.

Si vous êtes prêt à utiliser les frontend pour plan de test Sélénium là quelques options. Une fois que vous avez l'URL de l'image que vous pouvez saisir cette URL et inspecter les en-têtes retournés. vous pouvez également enregistrer les données dans un fichier si vous le souhaitez inspecter manuellement. Vous pouvez écrire un validateur en Java de prendre ces données et vérifier si elle décode en fait.

Si vous êtes prêt à l'essayer alors je vais vous écrire un exemple de script. Je peux même faire une telle fonction d'image rapide si vous le souhaitez.

L'utilisation de cette fonction une doublure:

Boolean isImageLoaded = (Boolean) ((JavascriptExecutor)driver).executeScript("return arguments[0].complete && typeof arguments[0].naturalWidth != \"undefined\" && arguments[0].naturalWidth > 0", imageWebElement);

où:

= imageWebElement WebElement pour localiser l'image sur la page

isImageLoaded = Résultat dans booléenne (return true si l'image est présente, false si ce ne est pas)

Vous pouvez certainement vérifier que l'image apparaît dans la source de la page par exemple en utilisant un paramètre XPath.

Vous pouvez supposer que parce qu'il est dans la source de la page, il sera affiché, mais je ne sais pas de toute façon de valider ce fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top