11
votes

Trouvez des images cassées dans la page et l'image Remplacer par une autre image

hi j'utilise Selenium webDriver 2.25.0 et affronter les problèmes graves,

  1. Comment trouver des images cassées dans une page en utilisant SELENIUM WebDriver
  2. Comment trouver l'image est remplacée par une autre image ayant le même nom (ceci est aussi bug) à l'aide de webDriver.

    Merci d'avance pour vos suggestions valoritaires.


0 commentaires

3 Réponses :


9
votes

Les lignes suivantes ne sont pas optimisées, mais elles pourraient trouver des images cassées: xxx

concernant votre deuxième problème, je pense que je ne l'ai pas compris correctement. Pourriez-vous l'expliquer avec plus de détails?


4 commentaires

Salut johnbo, une image ayant le nom est "myImage.jpg", première fois que je exécute mon script de test myImage trouvé. OK après quelques changements de développeurs de temps sur le site et ce "myImage" est remplacé par autre image ayant le même nom que "myImage" (sur dossier d'images). Maintenant, nous exécutons le script de test myImage trouvé et notre passe de script de test. Mais en réalité, c'est un bug car dans l'interface utilisateur une autre image obtient l'affichage. Merci pour votre réponse rapide.


Comme je le vois, vous devez stocker l'image dans la première exécution afin que vous puissiez le comparer la prochaine fois, car à partir du point de vue HTML, la page pourrait être exactement identique et sélénium ne pourra pas trouver la différence d'images. Ou peut-être que vous pourriez utiliser sélénium conjointement avec un outil de reconnaissance d'image comme le script Sikuli.


Je suis d'accord mais toutes les images de la page Web stockent et comparent ensuite, ce n'est pas bon en fonction de la performance. Nous pouvons jouer avec la taille de l'image (c'est-à-dire que nous pouvons stocker la taille de l'image et comparer la taille de l'image la prochaine fois). une idée s'il vous plaît suggérer.


Prenez une capture d'écran complète de page et vérifiez manuellement les résultats.



14
votes

La réponse acceptée exige que vous utilisiez un proxy avec un appel supplémentaire à chaque image pour déterminer si les images sont cassées ou non.

Heureusement, il y a une autre façon de le faire en utilisant uniquement JavaScript (j'utilise Ruby, mais vous pouvez utiliser le même code dans n'importe quel Exécutecript sur les liaisons WebDriver): xxx


à votre autre question, je Je recommanderais simplement de prendre une capture d'écran de la page et d'avoir un humain vérifiant manuellement la capture d'écran résultante a les images correctes. Les ordinateurs peuvent effectuer les travaux d'automatisation, mais les humains doivent vérifier et vérifier ses résultats de temps en temps :)


0 commentaires

2
votes

Basé sur les autres réponses, le code qui a finalement travaillé pour moi dans un réglage angulaire / protacteur / webDriverjs est le suivant: xxx

Le code webdiver compte le nombre d'éléments IMG et la fonction Exécuté dans le contexte du navigateur compte le nombre d'éléments chargés avec succès. Ces chiffres doivent être les mêmes.


2 commentaires

Le Allimgelts dans Protractor-Land fait fondamentalement la même chose que le imgs interne navigateur-terre, non? (Je ne suis pas vraiment sûr qu'ils sont, si surtout que je pose cela.) Mais, s'ils étaient ... la seule différence de longueur serait si un img [i] .naturalwidth <= 0 , non? Donc, il serait plus simple et plus efficace de sauter le Allimgelts et que le script de navigateur-terre renvoie simplement le nombre d'images avec une largeur naturelle non valide et que les terrains de protreseur s'attendent à ce que ce comptage soit 0? (Vous allez manquer sur le de la fantaisie, puis qui est un truc soigné à voir, cependant.)


Oui tu as raison. Cela peut être simplifié en renvoyant le nombre d'images cassées comme imgs.length - chargé , que vous pouvez alors vous attendre à être 0. Alors le Allimgetls n'est plus nécessaire.