Pilote HTMLUnit dans Selenium

Un navigateur sans tête est un navigateur Web sans interface utilisateur graphique. Il peut fonctionner en arrière-plan sans distractions visuelles. Il offre un moyen efficace et efficient de tester des applications Web tout en économisant du temps et des ressources. Dans ce didacticiel, nous verrons ce qu'est un navigateur sans tête, quand utiliser les tests de navigateur sans tête et comment l'effectuer à l'aide de Selenium.

Qu'est-ce que le navigateur sans tête ?

Un navigateur sans tête est un navigateur Web sans interface utilisateur graphique. Ce programme se comportera comme un navigateur mais n'affichera aucune interface graphique.

Certains des exemples de pilotes sans tête incluent

  • Unité HTML
  • Ghost
  • PhantomJS
  • ZombieJS
  • Watir-pilote Web

Quand utiliser les tests de navigateur sans tête ?

À l’ère numérique d’aujourd’hui, les applications Web sont développées pour être compatibles avec un large éventail d’appareils et de plates-formes. Cela représente souvent un défi pour les développeurs de sites Web qui doivent garantir que leurs applications fonctionnent de manière transparente sur ces plates-formes. Les tests de navigateur sans tête sont une solution idéale à ce problème car ils permettent aux développeurs de tester leurs applications Web sans avoir besoin d'une interface utilisateur graphique. En utilisant les tests de navigateur sans tête, les développeurs peuvent facilement tester des applications Web complexes avec plusieurs composants et dépendances, ouvrant la voie à un développement plus rapide, à un code sans bug et à des utilisateurs satisfaits.

Test du navigateur sans tête avec Selenium

Selenium est un outil puissant pour les tests de navigateur sans interface utilisateur, permettant aux développeurs d'exécuter des tests automatisés sans avoir besoin d'une interface utilisateur visible. En exécutant des tests en arrière-plan, Selenium peut économiser du temps et des ressources tout en aidant à identifier les problèmes qui peuvent ne pas être apparents dans un environnement de test traditionnel basé sur l'interface utilisateur. Cela inclut les problèmes liés aux performances et aux problèmes de mise en page qui ne peuvent devenir évidents que dans un environnement sans tête. Cependant, il est important de garder à l'esprit les limites des tests sans tête et de les équilibrer avec les méthodes traditionnelles basées sur l'interface utilisateur pour garantir une couverture complète des tests.

Exemples populaires de navigateurs sans tête

Il existe de nombreux navigateurs sans tête disponibles, chacun avec ses propres fonctionnalités et avantages, ce qui les rend adaptés à différents cas d'utilisation. Nous en discutons ci-dessous : -

PhantomJS

PhantomJS est un navigateur sans tête qui utilise WebKit comme moteur de rendu et prend en charge diverses normes Web telles que HTML5, CSS3 et JavaScript. Il peut être utilisé pour des tâches de capture d'écran et d'automatisation de pages. Il est open source et compatible avec plusieurs systèmes d'exploitation.

Exemple de Selenium avec Headless PhantomJS dans Python

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
# Set up PhantomJS options
phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy()
phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
# Set up the PhantomJS driver
driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Chrome

Chrome est le navigateur le plus populaire de la planète et propose également une fonctionnalité sans tête. Il peut être utilisé sur plusieurs plates-formes et prend en charge les langages et frameworks de programmation. Ses outils de débogage intégrés et sa documentation complète facilitent l'utilisation et le dépannage de tout problème pouvant survenir lors des tests.

Exemple de Chrome sans tête avec Selenium in Python

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
# Set up Chrome options
chrome_options = Options()
chrome_options.add_argument('--headless')  # Run Chrome in headless mode
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
# Set up the Chrome driver
driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Firefox

Firefox est un navigateur Web populaire qui peut également être utilisé comme navigateur sans tête à des fins de test. L'un des avantages de l'utilisation Firefox en tant que navigateur sans tête, sa nature légère en fait une option polyvalente pour tester sur différents systèmes d'exploitation. De plus, avec sa documentation complète et le soutien de la communauté, Firefox est un excellent choix pour ceux qui cherchent à expérimenter la technologie de navigateur sans tête.

Exemple de sans tête Firefox avec Selenium in Python

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
# Set up Firefox options
firefox_options = Options()
firefox_options.add_argument('--headless')  # Run Firefox in headless mode
# Set up the Firefox driver
driver = webdriver.Firefox(options=firefox_options)
# Perform actions using the driver
driver.get('https://www.example.com')
print(driver.title)
# Close the driver
driver.quit()

Avantages des tests de navigateur sans tête

  • Exécution des tests plus rapide
  • Tests rentables
  • Meilleure couverture des tests
  • Flexibilité dans l'exécution des tests
  • Intégration avec les pipelines CI / CD

Inconvénients des tests de navigateur sans tête

  • Manque d'interface graphique
  • Difficultés de débogage
  • Prise en charge limitée du navigateur

PiloteUnitéHTML

HTML UnitDriver est le navigateur sans tête le plus léger et le plus rapide à mettre en œuvre pour WebDriver. Il est basé sur HtmlUnit. Il est connu comme Pilote de navigateur sans tête. C'est la même chose que Chrome, IE ou FireFox pilote, mais il n'a pas d'interface graphique, donc on ne peut pas voir l'exécution du test à l'écran.

Fonctionnalités du pilote d'unité HTML

  • Prise en charge des protocoles HTTPS et HTTP
  • Prise en charge des réponses HTML (cliquer sur des liens, soumettre des formulaires, parcourir le modèle DOM du document HTML, etc.)
  • Prise en charge des cookies
  • Prise en charge du serveur proxy
  • Prise en charge de l'authentification de base et NTLM
  • Excellent Javascénario soutenez
  • Prise en charge des méthodes de soumission GET et POST
  • Possibilité de personnaliser les en-têtes de requête envoyés au serveur
  • Possibilité de déterminer si les réponses défaillantes du serveur doivent générer des exceptions ou doivent être renvoyées sous forme de pages du type approprié

Étapes pour utiliser le pilote HTMLUnit avec Selenium

Étape 1) In Eclipse, copiez le code suivant. Ajoutez les fichiers de la bibliothèque Selenium standard au projet. Aucun fichier jar supplémentaire n'est requis.

package  htmldriver;
import org.openqa.selenium.By;		
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;	
import org.openqa.selenium.htmlunit.HtmlUnitDriver;		
public class htmlUnitYest {				
		public static void main(String[] args) {
                     // Creating a new instance of the HTML unit driver
                      
                     WebDriver driver = new HtmlUnitDriver();
                      
           		     // Navigate to Google		
                     driver.get("http://www.google.com");					
          
					 // Locate the searchbox using its name		
                     WebElement element = driver.findElement(By.name("q"));	
                     
                    // Enter a search query		
                    element.sendKeys("Guru99");	
                   
		            // Submit the query. Webdriver searches for the form using the text input element automatically		
                    // No need to locate/find the submit button		
                    element.submit();			
                    
            		// This code will print the page title		
                    System.out.println("Page title is: " + driver.getTitle());		
                    
                    driver.quit();			
         }		
}

Étape 2) Exécutez le code. Vous remarquerez qu'aucun navigateur n'est lancé et les résultats sont affichés dans la console.

Étapes pour utiliser le pilote HTMLUnit avec Selenium

Avantages du pilote d'unité HTML :

  • Puisqu'il n'utilise aucune interface graphique pour tester, vos tests s'exécuteront en arrière-plan sans aucune interruption visuelle.
  • Par rapport à toutes les autres instances, l'exécution est plus rapide
  • Pour exécuter vos tests via le pilote HtmlUnit, vous pouvez également sélectionner d'autres versions du navigateur
  • Il est indépendant de la plate-forme et permet d'exécuter plus facilement plusieurs tests simultanément. Idéal pour test de charge.

Limitations:

  • Il ne peut pas émuler d'autres navigateurs JavaComportement du script

PhantomJS

PhantomJS est un navigateur sans tête avec JavaAPI de script. Il s'agit d'une solution optimale pour les tests de sites Web sans tête, l'accès et la manipulation de pages Web et est livré avec l'API DOM standard.

Pour utiliser PhantomJS avec Seleniun, il faut utiliser GhostDriver. Pilote fantôme est une implémentation du protocole Webdriver Wire en JS simple pour PhantomJS.

La dernière version de PhatomJS a des services Pilote fantôme et il n'est pas nécessaire de l'installer séparément.

Voici comment fonctionne le système-

PhantomJS

Étapes à suivre Selenium avec PhatomJS

Étape 1) Vous devez Eclipse avec Selenium Installé

Étape 2) Télécharger PhantomJS ici

Étapes à suivre Selenium Avec PhatomJS

Étape 3) Extrayez le dossier téléchargé dans Program Files

Étapes à suivre Selenium Avec PhatomJS

Étape 4) Téléchargez le pilote PhantomJS depuis ici. Ajoutez le pot à votre projet

Étapes à suivre Selenium Avec PhatomJS

Étape 5) Collez le code suivant dans Eclipse

package htmldriver;	
import java.io.File;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.phantomjs.PhantomJSDriver;	

public class phantom {				
		public static void main(String[] args) {
        	        File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe");				
                    System.setProperty("phantomjs.binary.path", file.getAbsolutePath());		
                    WebDriver driver = new PhantomJSDriver();	
                    driver.get("http://www.google.com");         
                    WebElement element = driver.findElement(By.name("q"));	
                    element.sendKeys("Guru99");					
                    element.submit();         			
                    System.out.println("Page title is: " + driver.getTitle());		
                    driver.quit();			
           }		
}

Étape 6) Exécutez le code. Vous observerez que la sortie s'affiche dans la console et qu'aucun navigateur n'est lancé.

REMARQUE: Lors de la première exécution, en fonction de vos paramètres, vous pouvez recevoir un avertissement de sécurité de Windows pour permettre d'exécuter PhantomJS. Cliquez sur Autoriser l'accès.

Étapes à suivre Selenium Avec PhatomJS

De nombreuses organisations utilisent Phantom.JS à diverses fins, par exemple :

  • Tests sans tête
  • Capture d'écran
  • Automatisation des pages
  • Surveillance réseau
  • Pour rendre des captures d'écran du tableau de bord pour leurs utilisateurs
  • Pour exécuter des tests unitaires en ligne de commande
  • Pour générer des manuels d'employé du HTML au PDF
  • Combiné avec QUnit pour la suite de tests

Résumé

Pour tester rapidement l'application dans différents navigateurs et sans aucune interruption visuelle, navigateur sans tête USP,EP, BP est utilisé. En raison de sa rapidité, de sa précision et de ses fonctionnalités faciles d'accès, le pilote d'unité HTML et PhantomJS gagnent en popularité pour les tests d'automatisation de navigateur sans tête. En suivant quelques étapes simples, vous découvrez avec quelle facilité ces outils peuvent être intégrés à d'autres outils et exécuter le code de test.