web-dev-qa-db-fra.com

Sélénium vs HtmlUnit?

J'essaie de mieux comprendre la structure de test et j'ai étudié le sélénium. J'ai déjà utilisé HTMLUnit avant, surtout lorsque je devais extraire des informations de sites Web ou autres.

Dans le contexte de l’automatisation des tests d’écriture, quels sont les avantages/inconvénients de Selenium par rapport à HTMLUnit? Il me semble que la configuration de Selenium est plus compliquée que celle de HTMLUnit, bien qu’il existe en même temps un pilote HTMLUnit pour Selenium qui, je pense, se comporte exactement de la même manière que dans HTMLUnit lui-même? 

Selenium fournit évidemment un cadre plus robuste, il a le Selenium RC pour les tests pararel, il a également différents pilotes de navigateur qui peuvent être utilisés - bien que lorsque vous utilisez les pilotes de navigateur, le test ouvre/ferme réellement une application de navigateur plutôt que sans tête.

Peut-être que je ne comprends pas bien le sélénium. Quelques directions et indications seraient géniales!

Sur une autre note - une question distincte - je cherche également à faire des tests automatisés sur un navigateur mobile, je vois que Selenium a un IPhoneDriver , mais ce n’est pas non plus un test sans tête car il nécessite un simulateur iOS réel. 

Existe-t-il de toute façon des tests sans tête sur des sites mobiles? Changer d'utilisateur-agent serait-il suffisant? J'ai lu quelques articles sur le changement d'utilisateur-agent qui semblent avoir leurs propres problèmes, par exemple. Définir l'agent utilisateur dans Selenium RC

Merci beaucoup!

42
TS-

eh bien, essayerait d'expliquer les différences en détail.

En ce qui concerne les tests parallèles, il est préférable d’utiliser la grille de sélénium . Concept de base de Selenium RC et la grille de sélénium .traditional Selenium setupSelenium grid setupSelenium grid:Requesting a Specific Environment Vous pouvez entrer dans plus de détails ici

Quelques mots sur Selenium webDriver:

L'intégration de l'API WebDriver est la principale nouveauté de Selenium 2.0. WebDriver est conçu pour fournir une interface de programmation plus simple et plus concise, tout en tenant compte de certaines limitations de l'API Selenium-RC. Selenium-WebDriver a été développé pour mieux prendre en charge Pages Web dynamiques dans lesquelles des éléments d'une page peuvent changer sans que la page elle-même ne soit rechargée. L'objectif de WebDriver est de fournir une API orientée objet bien conçue offrant une prise en charge améliorée des problèmes de test d'applications Web avancés et avancés.

Comment WebDriver "pilote-t-il" le navigateur par rapport à Selenium-RC?

Selenium-WebDriver effectue des appels directs au navigateur en utilisant le support natif d'automatisation de chaque navigateur. Les modalités de ces appels directs et les fonctions qu'ils prennent en charge dépendent du navigateur que vous utilisez. Les informations relatives à chaque "pilote de navigateur" sont fournies ultérieurement. dans ce chapitre . Pour ceux qui sont familiers avec Selenium-RC, ceci est assez différent de ce que vous avez l'habitude de voir. Selenium-RC fonctionnait de la même manière pour chaque navigateur pris en charge. Il "injectait" des fonctions javascript dans le navigateur lorsque celui-ci a été chargé, puis a utilisé son code javascript pour piloter l’AUT dans le navigateur. WebDriver n’utilise pas cette technique. Il pilote à nouveau le navigateur directement à l’aide du support intégré du navigateur pour l’automatisation.

WebDriver et le Selenium-Server

Vous pouvez avoir besoin ou non du serveur Selenium, en fonction de l'utilisation que vous envisagez d'utiliser Selenium-WebDriver. Si vous n'utilisez que l'API WebDriver, vous n'avez pas besoin du serveur Selenium. Si votre navigateur et vos tests Tous s'exécutent sur le même ordinateur et vos tests utilisent uniquement l'API WebDriver. Il n'est donc pas nécessaire d'exécuter Selenium-Server, car WebDriver exécutera directement le navigateur . Il existe cependant certaines raisons d'utiliser Selenium-Server avec Sélénium-WebDriver.

  • Vous utilisez Selenium-Grid pour répartir vos tests sur plusieurs machines Ou machines virtuelles (VM).
  • Vous souhaitez vous connecter à un ordinateur distant doté d'un navigateur particulier Version qui ne se trouve pas sur votre ordinateur actuel.
  • Vous n'utilisez pas les liaisons Java (c'est-à-dire Python, C # ou Ruby) et Voudraient utiliser le pilote HtmlUnit

Selenium-WebDriver’s DriversWebDriver est le nom de l’interface clé contre laquelle les tests doivent être écrits, mais il existe plusieurs implémentations, notamment:

HtmlUnit Driver C'est actuellement l'implémentation la plus rapide et la plus légère de WebDriver. Comme son nom l'indique, ceci est basé sur HtmlUnit. HtmlUnit est une implémentation basée sur Java d'un WebBrowser sans interface graphique. Pour toute liaison de langue (autre que Java), le serveur Selenium est requis pour utiliser ce pilote.

Avantages

  • Mise en oeuvre la plus rapide de WebDriver
  • Une solution Java pure et donc indépendante de la plate-forme.Prend en charge JavaScript.
  • Les inconvénients

  • JavaScript dans le pilote HtmlUnit Aucun des navigateurs populaires n'utilise le moteur JavaScript utilisé par HtmlUnit (Rhino). Si vous testez JavaScript à l'aide de HtmlUnit, les résultats risquent d'être très différents de ceux de ces navigateurs . Lorsque nous disons «JavaScript "Nous parlons en réalité de" JavaScript et du DOM ". Bien que le DOM soit défini par le W3C, chaque navigateur a ses propres particularités et différences dans la mise en oeuvre de ce dernier et dans la manière dont JavaScript interagit avec lui. HtmlUnit possède une implémentation du DOM impressionnante. et supporte bien l’utilisation de JavaScript, mais il n’est pas différent de tout autre navigateur: il a ses propres particularités et différences par rapport au standard W3C et aux implémentations DOM des principaux navigateurs, malgré sa capacité à imiter les autres navigateurs . Avec WebDriver, nous devions faire un choix: activer les capacités JavaScript de HtmlUnit et risquer que les équipes rencontrent des problèmes qui ne se manifestent que là-bas, ou laisser-nous JavaScript désactivé, sachant que Y a-t-il de plus en plus de sites qui utilisent JavaScript? Nous avons adopté l'approche conservatrice et, par défaut, nous avons désactivé le support lorsque nous utilisons HtmlUnit. Avec chaque version de WebDriver et de HtmlUnit, nous réévaluons cette décision: nous espérons activer JavaScript par défaut sur HtmlUnit à un moment donné.

Pour en savoir plus sur la configuration de webDriver, consultez this

From Documentation HtmlUnit : HtmlUnit n'est pas un framework de test unitaire générique. C'est un moyen de simuler un navigateur à des fins de test et est destiné à être utilisé dans un autre framework de test tel que JUnit ou TestNG .

Donc pour conclure la différence entre Selenium et HtmlUnit: HtmlUnit est une implémentation basée sur Java d’un WebBrowser sans interface graphique et un moyen de simuler un navigateur à des fins de test} et Selenium-WebDriver effectue des appels directs au navigateur à l'aide de la prise en charge native de chaque navigateur pour l'automatisation. Nous pouvons constater que HtmlUnit fournit une API sans possibilité d'interface graphique pour l'automatisation, tandis que WebDriver offre des possibilités d'automatisation pour les navigateurs internes.

Parlant de l’automatisation mobile, Selenium a également un pilote iPhone Article du wiki du pilote iPhone Et un pilote Android Article wiki Driver Android

Voir aussi cette présentation

Malheureusement, je ne peux pas vous donner mon évaluation de l'expérience de travail des pilotes de téléphonie mobile car je traite de l'automatisation Web (pas de téléphonie mobile). Sachez également que Cucumber (outil d’automatisation) est populaire parmi les automates mobiles. voir ceci et ceci .

J'espère que ça viendra un peu plus clair pour vous maintenant =).

Hope it come a lil bit more clear for you now =)

65
eugene.polschikov

Selenium et HTMLUnit ont un concept similaire, mais Selenium est plus mature/robuste et a beaucoup plus de fonctionnalités.

Notez que Selenium englobe le plug-in d'enregistrement (IDE) pour Firefox, ce qui vous permet d'enregistrer des tests et l'infrastructure 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 avoir avec HTMLUnit est qu'il nécessite moins de ressources. Vous pouvez donc potentiellement exécuter des tests sur moins de matériel, mais avec le support parallèle de Selenium, même ce n'est plus vraiment vrai.

3
CIGuy

Lorsque vous exécutez des tests depuis Jenkins durant la nuit, vous n’avez généralement pas accès à un système de fenêtrage tel que 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
DB Jav

J'ai utilisé Selenium WebDriver pour l'automatisation. Il existe une méthode très simple pour que le navigateur soit sans tête Il suffit d'appliquer ChromeOptions (dans mon cas, d'autres options de pilote sont disponibles) ChromeOptions ("Headless")

Il existe de nombreuses méthodes efficaces utilisant Options ou Services, par exemple Cela empêchera la fenêtre Pilote/CommandPrompt de "s'afficher" et restera donc "silencieuse" et non exposée. ChromeDriverServices ("Silent")

J'espère que cela t'aides.

0
Alan How

Au moins sur les systèmes UX, vous pouvez par exemple utiliser Xvfb et diriger les navigateurs vers cet affichage pour les rendre "sans tête" Voir aussi http://infiniteundo.com/post/54014422873/headless-Selenium-testing-with -firefox-and-xvfb ou Comment exécuter Selenium dans Xvfb?

0
Günter Zöchbauer