Sélénium vs HtmlUnit?

j'essaie de mieux comprendre le cadre d'essai et j'étudie le sélénium. J'ai déjà utilisé HtmlUnit avant, principalement lorsque j'avais besoin de racler quelques informations sur le site web ou les goûts.

dans le contexte de l'automatisation des tests d'écriture, quels sont les avantages et les inconvénients du sélénium par rapport au HTMLUnit? Il me semble que le sélénium est plus compliqué à mettre en place que le HTMLUnit, bien qu'en même temps il y ait un HTMLUnitDriver pour le sélénium que je pensez-vous vous comporter exactement de la même manière que dans HTMLUnit lui-même?

sélénium fournit évidemment un cadre plus robuste, il a le Selenium RC pour le test pararel, il a également différents pilotes de navigateur qui peuvent être utilisés - bien que lorsque vous avez utilisé les pilotes de navigateur, le test va effectivement ouvrir/fermer une application de navigateur plutôt que sans tête.

peut-être que je ne comprends pas le sélénium correctement. Quelques directions et des pointeurs seraient grands!

sur une autre note - une question séparée - je regarde aussi faire des tests automatisés sur le navigateur mobile, je vois que Selenium a un IPhoneDriver pour elle, mais alors ce n'est pas un test sans tête non plus, car il nécessite simulateur iOS réel.

y a-t-il de toute façon pour faire des tests sans tête sur les sites mobiles? Un changement d'agent-utilisateur serait-il suffisant? J'ai vu quelques messages sur le changement d'utilisateur-agent qui semblent avoir leurs propres défis, par exemple. Set user-agent in Selenium RC

Merci beaucoup!

42
demandé sur Community 2012-10-10 00:10:38

4 réponses

Eh bien, tenterait d'expliquer les différences en détail.

en parlant de tests parallèles, il vaut mieux utiliser la grille de sélénium. Concept de base de selenium RC et Selenium grid. traditional selenium setup selenium grid setup selenium grid:Requesting a Specific Environment Vous pouvez entrer dans plus de détails ici

quelques mots sur webDriver de sélénium :

La primaire nouveau la fonctionnalité de Selenium 2.0 est l'intégration de L'API WebDriver. WebDriver est conçu pour fournir une interface de programmation plus simple et plus concise tout en tenant compte de certaines limites de L'API Selenium-RC. Selenium-WebDriver a été développé pour mieux supporter les pages web dynamiques où les éléments d'une page peuvent changer sans que la page elle-même soit rechargée. L'objectif de WebDriver est de fournir une API orientée objet bien conçue qui offre une prise en charge améliorée pour les problèmes modernes avancés de test d'application web.

comment WebDriver "pilote" le navigateur par rapport à Selenium-RC?

Selenium-WebDriver effectue des appels directs au navigateur en utilisant le support natif de chaque navigateur pour l'automatisation. La façon dont ces appels directs sont effectués et les caractéristiques qu'ils supportent dépendent du navigateur que vous utilisez. Des informations sur chaque navigateur pilote " plus loin dans ce chapitre. Pour ceux qui connaissent le sélénium-RC, c'est très différent de ce à quoi vous êtes habitué. Selenium-RC a fonctionné de la même manière pour chaque navigateur pris en charge. Il a "injecté" des fonctions javascript dans le navigateur lorsque le navigateur a été chargé et a ensuite utilisé son javascript pour piloter L'AUT dans le navigateur. WebDriver n'utilise pas cette technique. Encore une fois, il pilote le navigateur directement en utilisant le soutien intégré du navigateur pour l'automatisation.

WebDriver et le Sélénium, le Serveur

vous pouvez, ou ne pouvez pas, avoir besoin du serveur Selenium, selon la façon dont vous avez l'intention d'utiliser Selenium-WebDriver. Si vous utilisez uniquement L'API WebDriver, vous n'avez pas besoin de Selenium-Server. Si votre navigateur et vos tests fonctionnent tous sur la même machine, et que vos tests n'utilisent que L'API WebDriver, vous n'avez pas besoin d'exécuter Selenium-Server; WebDriver exécutera le navigateur directement. Il y a quelques raisons d'utiliser le Selenium-Server avec Selenium-WebDriver.

  • vous utilisez Selenium-Grid pour distribuer vos tests sur plusieurs machines ou machines virtuelles (VMs).
  • vous souhaitez Vous connecter à une machine distante qui a un navigateur particulier version qui n'est pas sur votre machine.
  • vous n'utilisez pas les fixations Java (i.e. Python, C#, ou Ruby) et vous souhaitez utiliser HtmlUnit Driver

Sélénium WebDriver est Conducteurs WebDriver est le nom de l'interface clé par rapport à laquelle les tests doivent être écrits, mais il y a plusieurs implémentations. Il s'agit de:

Interface Htmlunit Pilote C'est actuellement l'implémentation la plus rapide et la plus légère de WebDriver. Comme son nom l'indique, elle est basée sur HtmlUnit. HtmlUnit est une implémentation java d'un WebBrowser sans GUI. Pour toute liaison linguistique (autre que java) le serveur Selenium doit utiliser ce pilote.

Pros

  • mise en œuvre la plus rapide de WebDriver
  • une solution Java pure et donc il est indépendant de la plate-forme.
  • Supporte JavaScript

Cons

  • émule le comportement JavaScript d'autres navigateurs (voir ci-dessous)

JavaScript dans le pilote HtmlUnit Aucun des navigateurs populaires n'utilise le moteur JavaScript utilisé par HtmlUnit (Rhino). Si vous testez JavaScript en utilisant HtmlUnit les résultats peuvent différer considérablement de ces navigateurs. Quand nous disons "JavaScript", nous entendons en fait "JavaScript et le DOM". Bien que le DOM soit défini par le W3C, chaque navigateur a ses propres bizarreries et différences dans leur mise en œuvre du DOM et dans la façon dont JavaScript interagit avec celui-ci. Interface htmlunit a une impressionnante complète mise en œuvre du DOM et dispose d'un bon support pour L'utilisation de JavaScript, mais il n'est pas différent de tout autre navigateur: il a ses propres bizarreries et différences à la fois de la norme W3C et les mises en œuvre DOM des principaux navigateurs, malgré sa capacité à imiter d'autres navigateurs. Avec WebDriver, nous avons dû faire un choix; est-ce que nous activons les capacités JavaScript de HtmlUnit et courons le risque que des équipes rencontrent des problèmes qui ne se manifestent que là-bas, ou est-ce que nous laissons JavaScript désactivé, sachant Qu'il y a de plus en plus de sites qui utilisent JavaScript? Nous avons adopté une approche conservatrice, et par défaut nous avons désactivé le support lorsque nous utilisons HtmlUnit. Avec chaque version de WebDriver et HtmlUnit, nous réévaluons cette décision: nous espérons activer JavaScript par défaut sur le HtmlUnit à un moment donné.

pour en savoir plus sur la configuration de webDriver voir this

à Partir de interface htmlunit documentation : interface htmlunit n'est pas un générique framework de test unitaire. Il s'agit spécifiquement d'un moyen de simuler un navigateur à des fins de test et est destiné à être utilisé dans un autre cadre de test tel que JUnit ou TestNG.

Donc pour conclure, le Sélénium et l'interface htmlunit différence : HtmlUnit est une implémentation java basée d'un WebBrowser sans GUI et une façon de simuler un navigateur pour et Selenium-WebDriver effectue des appels directs au navigateur en utilisant le support natif de chaque navigateur pour l'automatisation. nous pouvons voir que HtmlUnit fournit L'API sans GUI possibilité d'automatisation tandis que WebDriver fournit les possibilités d'automatisation des navigateurs internes.

à propos de l'automatisation mobile, Le sélénium a aussi un pilote iPhone iPhone Pilote de l'article wiki et conducteur Androïde Android Pilote de l'article wiki

Voir aussi cette présentation

malheureusement, Je ne peux pas vous donner mon évaluation de l'expérience de travail des pilotes mobiles comme je traite de l'automatisation web (pas mobile). Sachez aussi que Cucumber (outil d'automatisation) est populaire parmi les automateurs mobiles. voir ce et ce .

Espère qu'il viendra un ptit peu plus clair pour vous maintenant =)

65
répondu eugene.polschikov 2012-10-10 17:28:04

sélénium et HTMLUnit sont un peu similaires dans leur concept, mais le sélénium est plus mature / robuste et a beaucoup plus de caractéristiques.

notez que Selenium comprend le plugin enregistrement (IDE) pour Firefox, qui vous permet d'enregistrer des tests et le cadre d'automatisation RC/WebDriver qui pilote essentiellement un navigateur. Les deux peuvent être utilisés ensemble pour rendre la création de test très facile.

le seul avantage que j'ai pu voir à utiliser HTMLUnit est qu'il est moins exigeant beaucoup de ressources, vous pourriez donc potentiellement exécuter des tests sur moins de matériel, mais avec le support parallèle de Selenium, même cela n'est plus vraiment vrai.

3
répondu CIGuy 2012-10-10 01:05:15

lors de l'exécution de tests à partir de Jenkins du jour au lendemain, vous n'avez généralement pas accès à un système de fenêtrage comme X11 ou Windows dans lequel exécuter le navigateur web. Je vois donc un avantage à utiliser le pilote web HTMLUnit dans ce cas car il ne nécessite pas l'accès à un système de fenêtrage.

2
répondu DB Jav 2014-03-06 13:45:15

au moins sur les systèmes UX, vous pouvez utiliser par exemple Xvfb et orienter les navigateurs vers cet écran pour les rendre "sans tête"" Voir aussi http://infiniteundo.com/post/54014422873/headless-selenium-testing-with-firefox-and-xvfb ou Comment faire tourner le sélénium dans Xvfb?

0
répondu Günter Zöchbauer 2017-05-23 12:34:33