Com executar WebDriver en mode sense cap

Com s'executa WebDriver en mode sense cap? Això pot ser necessari si l'eina CI, per exemple, Jenkins no admet la interfície d'usuari.

L'execució de proves automatitzades de WebDriver en mode sense cap proporciona avantatges en termes de velocitat d'execució de les proves i una integració més senzilla a la canonada CI.

En aquest tutorial, utilitzarem PhantomJS i ChromeDriver per executar proves Selenium WebDriver en mode sense cap.




PhantomJS

Per executar proves de Selenium WebDriver en mode sense cap mitjançant PhantomJS, primer heu de descarregar el fitxer Fitxer executable de PhantomJS i deseu-lo en una ubicació, per exemple la carpeta de recursos del vostre projecte.

A l'exemple següent, he posat l'executable PhantomJS a src / test / resources / phantomjs


També necessitareu la dependència del controlador fantasma:

com.github.detro.ghostdriver phantomjsdriver 1.0.1

I la vostra 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

Per executar proves de WebDriver en mode sense cap amb ChromeDriver, haureu d'afegir les dependències rellevants al fitxer 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}

A continuació, indiquem al gestor de WebDriver que iniciï el controlador Chrome en mode sense cap


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');
} }