Comment exécuter WebDriver en mode sans tête

Comment exécuter WebDriver en mode sans tête? Cela peut être nécessaire si votre outil CI, par exemple, Jenkins ne prend pas en charge l'interface utilisateur.

L'exécution de tests automatisés WebDriver en mode headless offre des avantages en termes de rapidité d'exécution des tests et d'intégration plus facile dans le pipeline CI.

Dans ce tutoriel, nous utiliserons PhantomJS et ChromeDriver pour exécuter des tests Selenium WebDriver en mode sans tête.




PhantomJS

Pour exécuter les tests Selenium WebDriver en mode sans tête à l'aide de PhantomJS, vous devez d'abord télécharger le Fichier exécutable PhantomJS et enregistrez-le dans un emplacement, par ex. dossier de ressources de votre projet.

Dans l'exemple ci-dessous, j'ai mis l'exécutable PhantomJS dans src / test / resources / phantomjs


Vous aurez également besoin de la dépendance du pilote fantôme:

com.github.detro.ghostdriver phantomjsdriver 1.0.1

Et votre classe Java:

import org.openqa.selenium.phantomjs.PhantomJSDriver; import org.openqa.selenium.phantomjs.PhantomJSDriverService; import org.openqa.selenium.remote.DesiredCapabilities; public class WebDriverBase {
static protected WebDriver driver;

public static void setup() {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setJavascriptEnabled(true); // not really needed: JS enabled by default
caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, 'src/test/resources/phantomjs');

driver = new PhantomJSDriver(caps);
}

public static void main(String[] args) {
WebDriverBase.setup();
driver.get('https://devqa.io');
} }


ChromeDriver

Pour exécuter des tests WebDriver en mode sans tête à l'aide de ChromeDriver, vous devrez ajouter les dépendances appropriées dans votre fichier pom.xml:


org.seleniumhq.selenium
selenium-chrome-driver
${selenium.version}
org.seleniumhq.selenium
selenium-server
${selenium.version}
org.seleniumhq.selenium
selenium-java
${selenium.version}
io.github.bonigarcia
webdrivermanager
${webdrivermanager.version}

Ensuite, nous demandons au gestionnaire WebDriver de lancer le pilote chrome en mode sans tête


import io.github.bonigarcia.wdm.ChromeDriverManager; import org.openqa.selenium.chrome.ChromeDriver; public class WebDriverBase {
static protected WebDriver driver;
public static void setup() {
ChromeDriverManager.getInstance().setup();
ChromeOptions chromeOptions = new ChromeOptions();

chromeOptions.addArguments('--headless');
driver = new ChromeDriver(chromeOptions);
}
public static void main(String[] args) {
WebDriverBase.setup();
driver.get('https://devqa.io');
} }