[JAVA] Chrome59 Vergleich von Normal- und Headless-Modus

Es scheint, dass Chrome 59 um den 05.06.2017 veröffentlicht wurde. Ich denke, dass es viele Leute gibt, die sich darauf gefreut haben, weil diese Version den Headless-Modus unterstützt. Die neueste Version des Treibers Chrome Driver 2.29 unterstützt jedoch nur bis zu Chrome 58, sodass Sie eine Weile warten müssen. Es kann jedoch bis zu einem gewissen Grad verschoben werden, so dass es vorbereitet werden kann.

So arbeiten Sie im Headless-Modus

Normalerweise (nicht kopfloser Modus) scheint die Kombination von Chrome59 + ChromeDriver2.29 ohne Probleme zu funktionieren.

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

WebDriver driver = new ChromeDriver();
driver.get("http://qiita.com/");

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/path/to/screenshot.png "));

driver.quit();

Fügen Sie dann Chrome-Parameter hinzu, indem Sie auf "Headless Chrome Beginning" verweisen.

System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");

//Chrome-Parameter "--headless --disable-GPU "Bezeichnung
ChromeOptions options = new ChromeOptions();
options.addArguments("--headless", "--disable-gpu");

// WebDriver driver = new ChromeDriver();
WebDriver driver = new ChromeDriver(options);
driver.get("http://qiita.com/");

File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("/path/to/screenshot.png "));

driver.quit();

In diesem Fall können Sie Screenshots auch in einer Umgebung ohne Anzeige erstellen.

Vergleich des aktuellen Betriebs

Vielleicht ist es nur meine Linux-Umgebung, aber ich kann einige Verhaltensunterschiede feststellen, die ich nicht gut verstehe. Es scheint besser, es mit Vorsicht zu verwenden, bis es sich stabilisiert.

Proxy-Einstellungen funktionieren nicht

Wenn Sie einen Proxy verwenden, der sich von den Betriebssystemeinstellungen unterscheidet, werden die Parameter in Chrome verwendet

-–proxy-server="http=xxx.xxx.xxx.xxx:8080;https=xxx.xxx.xxx.xxx:8080"
--proxy-bypass-list="local-test-server"

Es sollte angegeben werden als, aber wenn Sie dies im kopflosen Modus hinzufügen

python


WebDriver driver = new ChromeDriver(options);

Es wird aufhören.

Zugriff auf Site mit Zertifikatausgabe nicht möglich

Wenn ich versuche, auf eine Site zuzugreifen, die ein rotes Dreieck auf der linken Seite der URL hat

python


driver.get(url);

Es wird bei aufhören. Es gibt keine Änderung, auch wenn ich den Chrome-Parameter "--ignore-zertifikatsfehler" hinzufüge.

Der Fensterwechsel funktioniert nicht

Für Websites mit mehreren Fenstern

python


driver.switchTo().window(windowId);

Ich schalte so um, aber es schaltet auch nach ein paar Minuten Wartezeit nicht um.

Recommended Posts

Chrome59 Vergleich von Normal- und Headless-Modus
Vergleich von Android Handler Looper und runOnUiThread
Informationen zur Funktionsweise von next () und nextLine ()
Gründlicher Vergleich von Android- und iOS-Implementierungen
[Java / Swift] Vergleich von Java-Schnittstelle und Swift-Protokoll
[Java] Vergleich von Sammlungs- und StringBuilder-Operationsmethoden
Vergleich von JavaScript-Objekten und Ruby-Klassen
Äquivalenter Vergleich von Java-Wrapper-Klasse und primitivem Typ