Pilote HTMLUnit dans SeleniumTutoriel sur les navigateurs sans interface graphique
⚡ Résumé intelligent
HtmlUnitDriver est l'implémentation sans interface graphique la plus rapide de Selenium WebDriver, tandis que PhantomJS, autrefois un navigateur sans interface graphique populaire basé sur GhostDriver, est obsolète depuis 2018 et désormais remplacé par Chrome sans interface graphique. Firefoxet Playwright pour les flux de travail d'automatisation modernes.

Un navigateur sans interface graphique est un navigateur web dépourvu d'interface utilisateur graphique. Il peut fonctionner en arrière-plan sans affichage visuel.tracIl offre une méthode efficace pour tester les applications web tout en économisant du temps et des ressources. Dans cet article, nous explorons ce qu'est un navigateur sans interface graphique, quand utiliser les tests de navigateur sans interface graphique et comment les réaliser. Selenium HtmlUnitDriver et PhantomJS.
Qu'est-ce qu'un navigateur sans tête ?
Un navigateur sans interface graphique est un navigateur web sans interface utilisateur graphiqueCe programme se comporte comme un navigateur classique, mais il n'affiche aucune fenêtre d'interface graphique pendant son exécution.
Voici quelques exemples de pilotes de navigateur sans interface graphique :
- Unité HTML
- Ghost
- PhantomJS (obsolète)
- ZombieJS
- Watir-pilote Web
- Chrome sans tête
- Sans tête Firefox
Quand utiliser les tests de navigateur sans tête ?
À l'ère du numérique, les applications web sont conçues pour être compatibles avec une vaste gamme d'appareils et de plateformes. Cela représente un défi pour les développeurs, qui doivent garantir le bon fonctionnement de leurs applications dans différents environnements. Les tests en mode « headless browser testing » constituent une solution idéale, car ils permettent aux développeurs de valider leurs applications web sans interface graphique. Grâce à ces tests, les développeurs peuvent rapidement tester des applications web complexes comportant de nombreux composants et dépendances, ce qui accélère le développement, réduit le nombre de bogues et améliore la satisfaction des utilisateurs.
Test du navigateur sans tête avec Selenium
Selenium est un outil puissant pour les tests de navigateur sans interface graphique, permettant aux développeurs d'exécuter des tests automatisés sans interface utilisateur visible. En exécutant les tests en arrière-plan, Selenium permet de gagner du temps et des ressources tout en aidantping Il est important d'identifier les problèmes qui peuvent passer inaperçus dans un environnement de test d'interface utilisateur classique. Cela inclut les problèmes de performance et de mise en page qui ne deviennent apparents que dans un environnement sans interface graphique. Toutefois, il est essentiel d'équilibrer les tests sans interface graphique avec les tests d'interface utilisateur classiques afin de garantir une couverture complète.
Exemples populaires de navigateurs sans tête
Il existe de nombreux navigateurs sans interface graphique, chacun présentant ses propres caractéristiques et avantages, ce qui les rend adaptés à différents cas d'utilisation. Nous les abordons ci-dessous.
PhantomJS
Avis de dépréciation : Le développement actif de PhantomJS a cessé en 2018 et le projet n'est plus maintenu. Les nouveaux projets devraient privilégier Chrome sans interface graphique. Firefox, Dramaturge pour l'automatisation moderne sans interface graphique. L'exemple PhantomJS ci-dessous est fourni à titre indicatif uniquement.
PhantomJS est un navigateur sans interface graphique qui utilise WebKit comme moteur de rendu et prend en charge les standards web tels que HTML5, CSS3 et JavaCe script permet la capture d'écran et l'automatisation de pages web. Il est open source et compatible avec de nombreux 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 au monde et propose également un mode sans interface graphique. Il est compatible avec de nombreuses plateformes et prend en charge les langages de programmation et les frameworks les plus courants. Ses outils de débogage intégrés et sa documentation complète facilitent son utilisation et la résolution des problèmes 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 interface graphique pour les tests. L'un des avantages de son utilisation Firefox En tant que navigateur sans interface graphique, son principal atout réside dans sa légèreté, ce qui en fait une option polyvalente pour les tests sur différents systèmes d'exploitation. Associée à une documentation complète et au soutien de sa communauté, Firefox est un excellent choix pour les équipes qui expérimentent l'automatisation des navigateurs sans interface graphique.
Exemple de sans tête Firefox au 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 simplifiée avec les pipelines CI/CD
Inconvénients des tests de navigateur sans tête
- Absence d'interface graphique visible pour l'inspection manuelle
- Le débogage peut s'avérer plus difficile sans écran.
- Couverture comportementale limitée spécifique au navigateur
HtmlUnitDriver
HtmlUnitDriver est l'implémentation la plus légère et la plus rapide d'un navigateur sans interface graphique pour Selenium WebDriver. Il est basé sur HtmlUnit et est également connu sous le nom de Pilote de navigateur sans têteIl se comporte comme Chrome, IE ou Firefox Le pilote HtmlUnitDriver est maintenu et distribué via [nom du réseau de distribution manquant]. Cependant, il ne possède pas d'interface graphique, l'exécution des tests n'est donc pas visible à l'écran. HtmlUnitDriver est toujours maintenu et distribué via [nom du réseau de distribution manquant]. org.seleniumhq.selenium:htmlunit3-driver Artefact Maven.
Caractéristiques de HtmlUnitDriver :
- 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
- Solide 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 contrôler si les réponses erronées du serveur doivent générer des exceptions ou être renvoyées sous forme de pages du type approprié.
Étapes d'utilisation de HtmlUnitDriver avec Selenium
Étape 1) In EclipseCopiez le code suivant. Ajoutez la norme Selenium Les fichiers de bibliothèque sont ajoutés 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 HtmlUnit 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 constaterez qu'aucun navigateur n'est lancé et que les résultats s'affichent dans la console.
Avantages de HtmlUnitDriver
- Comme il n'utilise aucune interface graphique, les tests s'exécutent en arrière-plan sans interruption visuelle.
- Comparée aux autres instances de pilote, l'exécution est plus rapide.
- Vous pouvez également émuler différentes versions de navigateur lors de l'exécution de tests via HtmlUnitDriver.
-
Il est indépendant de toute plateforme et permet d'exécuter facilement plusieurs tests simultanément. Il est idéal pour test de charge.
Limites :
- Il ne peut pas entièrement imiter JavaComportement des scripts de chaque véritable moteur de navigateur
PhantomJS
Rappel: PhantomJS est obsolète et n'est plus maintenu. Pour les nouveaux développements sans interface graphique, utilisez Selenium avec Chrome sans interface graphique ou Firefox, ou passez à la section Dramaturge. La section ci-dessous est conservée à titre de référence uniquement.
PhantomJS est un navigateur sans interface graphique doté d'une interface graphique. JavaAPI Script. Elle était historiquement utilisée pour les tests de sites web sans interface graphique, l'accès et la manipulation des pages web, et est fournie avec l'API DOM standard.
Pour utiliser PhantomJS avec Selenium, vous avez besoin de GhostDriver. Pilote fantôme est une implémentation du protocole WebDriver Wire en langage naturel JavaScript pour PhantomJS.
Les versions ultérieures de PhantomJS des services GhostDriver, donc Il n'est pas nécessaire de l'installer séparément.
Voici comment fonctionne le système :
Étapes à suivre Selenium avec PhantomJS
Étape 1) Vous devez Eclipse au Selenium installé.
Étape 2) Télécharger PhantomJS ici.
Étape 3) ExtracDéplacez le dossier téléchargé dans Program Files.
Étape 4) Téléchargez le pilote PhantomJS depuis iciAjoutez le fichier JAR à votre projet.
É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. Le résultat s'affichera dans la console et aucun navigateur ne sera ouvert.
NOTE: Lors de la première exécution, en fonction de vos paramètres, vous pourriez voir un avertissement de sécurité. Windows pour permettre à PhantomJS de s'exécuter. Cliquez Permettre l'accès.
De nombreuses organisations ont historiquement utilisé PhantomJS pour des tâches telles que :
- Tests sans interface graphique
- Capture d'écran
- Automatisation des pages
- Surveillance du réseau
- Création de captures d'écran du tableau de bord pour leurs utilisateurs
- Exécution des tests unitaires en ligne de commande
- Générer des manuels d'employés à partir de HTML vers PDF
- Combinaison avec QUnit pour la suite de tests
Pour les nouveaux projets, remplacez ces cas d'utilisation de PhantomJS par Chrome sans interface graphique. Firefox, ou Playwright, qui reçoivent des mises à jour continues en matière de sécurité et de rendu.






