Sumimasen spät
Dies ist der Artikel zum 7. Tag von Chromium Browser Adventskalender 2017.
Als ich meinen E2E-Test neu konfigurierte, war ich neugierig, wie ich das neueste Chrome Headless in einer Java-Umgebung verwenden kann.
Die Umgebung basiert auf Mac, aber zum Glück sollte Linux gut funktionieren.
Der Artikel verwendet die neueste Version basierend auf 2017/12. Das Neueste der heutigen Basis
ist.
Unter dem Strich wird die Java-Version von ChromeWebDriver zumindest vorerst nicht mehr unterstützt. Mit dem für Ihre Sprache geeigneten Selenide-Wrapper können Sie den Schritt zum Herunterladen von chromedriver überspringen.
Erstellen Sie eine build.gradle-Datei wie die folgende und bringen Sie die Bibliothek Selenide (selenide.org) in einen verwendbaren Zustand.
build.gradle
apply plugin: 'idea'
apply plugin: 'java'
repositories {
mavenCentral();
}
sourceCompatibility = targetCompatibility = 1.8
dependencies {
compile 'com.codeborne:selenide:4.9'
compile 'org.springframework.boot:spring-boot-starter-logging:1.5.9.RELEASE'
}
configurations.all {
exclude group: 'log4j'
exclude module: 'log4j-over-slf4j'
exclude module: 'slf4j-log4j12'
exclude module: 'slf4j-jdk14'
exclude module: 'commons-logging'
}
So starten Sie Chrome über Selen In diesem Fall fügen Sie es vor dem Laden der Seite in eine statische Variable ein.
ChromeHeadlessApplication.java
package holdings.ozaki.matsudak;
import static com.codeborne.selenide.Selenide.open;
import static com.codeborne.selenide.Selenide.screenshot;
import org.slf4j.bridge.SLF4JBridgeHandler;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
public class ChromeHeadlessApplication {
static {
//Streame das Protokoll in Richtung Slf4j
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
//Verwenden Sie ChromeDriver im Headless-Modus
Configuration.browser = WebDriverRunner.CHROME;
Configuration.headless = true;
Configuration.reportsFolder = "build/reports";
Configuration.browserSize = "1024x768";
}
public static void main (final String...args) {
// google.Machen Sie einen Screenshot von com und beenden Sie
open("https://google.com");
screenshot("google.com");
}
}
Zunächst ist es ein Treiber, der als Brücke zum Ausführen von Chrome fungiert, aber "io.github.bonigarcia.wdm.Downloader" lädt ihn für die folgenden Zwecke herunter.
log
2017-12-24 20:13:55 [main] INFO i.g.bonigarcia.wdm.BrowserManager - Reading https://chromedriver.storage.googleapis.com/ to seek [chromedriver]
2017-12-24 20:13:55 [main] INFO i.g.bonigarcia.wdm.BrowserManager - Latest version of [chromedriver] is 2.34
2017-12-24 20:13:55 [main] DEBUG io.github.bonigarcia.wdm.Downloader - Downloading https://chromedriver.storage.googleapis.com/2.34/chromedriver_mac64.zip to /Users/jp20217/.m2/repository/webdriver/chromedriver/mac64/2.34/chromedriver_mac64.zip
2017-12-24 20:13:56 [main] INFO i.g.bonigarcia.wdm.BrowserManager - Exporting webdriver.chrome.driver as /Users/matsudak/.m2/repository/webdriver/chromedriver/mac64/2.34/chromedriver
Wenn Sie ps -A ausführen, während Sie die Hauptanweisung ausführen, können Sie sehen, dass Chrome mit --headless
& --disable-gpu
gestartet wird.
ps -A
50321 ?? 0:00.30 /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-gpu --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --force-fieldtri
als=SiteIsolationExtensions/Control --headless --ignore-certificate-errors --load-extension=/var/folders/wn/s9lbdlj56rd4bl2b6k54v_z80000gp/T/.org.chromium.Chromium.hg9Dpt/internal --log-level=0 --metrics-recording-only --no-first-run --no-sandbox --password-store=basic --remote-debugging-port=12986 --test-type=webdriver --use-mock-keychain --user-data-dir=/var/
folders/wn/s9lbdlj56rd4bl2b6k54v_z80000gp/T/.org.chromium.Chromium.76jzQ6 data:,
Da Chrome Headless nicht verwendet werden kann, gelten für PhantomJS usw. verschiedene Einschränkungen. Ich denke, dass es viele Umgebungen gibt, in denen Chrome über xvid gestartet wurde.
Ab 2017 sollten Sie Chrome Headless ohne xvid verwenden.
Recommended Posts