152 votes

Casperjs / PhantomJs vs Selenium

Nous utilisons Selenium pour automatiser nos tests d'interface utilisateur. Récemment, nous avons vu la majorité de nos utilisateurs utiliser Chrome. Nous voulions donc connaître les avantages et les inconvénients de l’utilisation de PhantomJS vs Selenium:

  • Existe-t-il un avantage réel en termes de performances, par exemple le temps nécessaire pour exécuter les cas de test?
  • Quand faut-il préférer PhantomJS au sélénium?

184voto

Ariya Hidayat Points 6765

Ils s'attaquent à des problèmes différents. Depuis PhantomJS fonctionne parfaitement sur la ligne de commande, il est approprié que la première couche de test de détection de fumée, que ce soit dans le cadre du développement de flux de travail et/ou dans un serveur d'intégration continue. Le sélénium cibles multiples navigateurs et il est donc très utile pour assurer la cohérence de navigateur et de procéder à de vastes tests sur différents systèmes d'exploitation.

Si votre application web doit fonctionner sur une variété de navigateurs web, de l'exécution de l'INTERFACE utilisateur de test uniquement avec PhantomJS ne donnera pas plus de la couverture de test. Cependant, il est parfaitement bien de lancer PhantomJS et l'exercice de base vérifications avant de le faire en profondeur des tests. Imaginer la folie de test d'une application de gestion de finances où l'écran de connexion est involontairement cassé et non fonctionnels!

Notez que la ligne entre les deux est un peu floue avec la récente WebDriver soutien dans la dernière PhantomJS. Il est maintenant possible d'exécuter rapidement les premiers tests à l'aide de PhantomJS et alors (en supposant qu'il n'est pas grave erreur rencontrée) de continuer à exécuter les mêmes tests à fond en Sélénium de l'installation.

50voto

mekondelta Points 190

Avec l'intégration récente de WebDriver (comme Ariya l'a noté), vous pouvez désormais utiliser Selenium pour piloter PhantomJS.

C'est extrêmement puissant.

Vous pouvez exécuter un ensemble de tests Selenium entièrement automatisés (en utilisant PhantomJS comme implémentation WebDriver) via votre CI sur un serveur Unix sans tête à chaque enregistrement. Ensuite, si vous souhaitez tester la compatibilité du navigateur, vous pouvez exécuter vos tests localement en modifiant l'implémentation WebDriver sous-jacente en Chrome, Firefox, etc.

41voto

Mark Butler Points 1463

Je suis actuellement à la rédaction d'un site web d'extraction de cadre. J'ai 524 tests d'obtenir des données à partir de 250 sites web à l'aide de XPath. Initialement, le cadre utilisé un analyseur HTML, HTMLCleaner, mais je suis en train d'enquêter à l'aide de Sélénium parce que je veux la prise en charge Javascript. J'ai exécuter les tests sur l'interface htmlunit, Chrome, Firefox et PhantomJS pilotes. Voici une comparaison de la durée et le nombre d'échecs pour chaque approche:

                    Failures    Time (secs) 
HtmlCleaner         0           82  
HtmlUnit            169         102 
Google Chrome       38          562 
Firefox             46          1159    
PhantomJS           40          575

Quelques commentaires:

  • Dans certains cas, les "échecs" ne peuvent pas être des échecs, il peut être que les extracteurs sont défaillants parce Javascript est ré-écriture de la DOM. Je suis en train d'analyser les échecs de trouver la cause.

  • Cela dit, l'interface htmlunit est la manière la plus rapide de Sélénium pilote, mais il est aussi peu fiable. Ce manque de fiabilité ne concerne pas seulement le Javascript, il y a des problèmes de traitement "malpropre, sale, dans le monde réel" HTML parce que quelque chose semble cassé dans la balise algorithme d'équilibrage. Un couple de questions ont été soulevées à ce sujet, mais ils n'ont pas été corrigés (voir HTML-UNITÉ de 1423 et HTML-UNITÉ 1046.

  • Firefox est le plus lent de Sélénium pilote, même si je suis désactiver le chargement des images et feuilles de style. C'est parce qu'il est le plus lent à charger et initialiser, le rendant beaucoup plus lent que Chrome, et chaque fois qu'une extraction échoue j'ai besoin de recharger le pilote (dans les tests que j'ai créer un pool de 5 pilotes pour atténuer l'URL de récupération des retards pour tous les Sélénium web pilotes).

  • PhantomJS atteint une précision meilleure que Firefox, légèrement inférieur à celui de Chrome, mais dans près de la moitié du temps de Firefox. Ce qui est plus, je peux le faire tourner sur ma boîte de dev, il ne permet pas de prendre le contrôle de ma machine" par le lancement de plusieurs navigateurs de sorte que je peux obtenir sur le travail.

Je vous recommande fortement de PhantomJS.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X