webentwicklung-frage-antwort-db.com.de

Ausführen von Selenium mit headless Chrome Webdriver

Also probiere ich ein paar Sachen mit Selenium aus und möchte, dass es schnell geht.

Mein Gedanke ist also, dass das Skript mit Headless Chrome schneller laufen würde.

Ist diese Annahme zuerst richtig, oder spielt es keine Rolle, wenn ich mein Skript mit einem kopflosen Treiber starte?

Trotzdem möchte ich immer noch, dass es funktioniert, um ohne Kopf zu laufen, aber irgendwie kann ich es nicht, ich habe verschiedene Dinge ausprobiert und die meisten haben vorgeschlagen, dass es funktionieren wird, wie hier im Oktober-Update gesagt

Wie kann ich ChromeDriver so konfigurieren, dass es den Chrome-Browser im Headless-Modus über Selenium initiiert?

Aber wenn ich das versuche, bekomme ich seltsame Konsolenausgaben und es scheint immer noch nicht zu funktionieren.

Irgendwelche Tipps geschätzt.

2
Rhynden

Um Chrome-Headless auszuführen, fügen Sie einfach --headless über chrome_options.add_argument hinzu, d. H .:

from Selenium import webdriver
from Selenium.webdriver.chrome.options import Options
chrome_options = Options()
#chrome_options.add_argument("--disable-extensions")
#chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)

start_url = "https://google.com"
driver.get(start_url)
print(driver.page_source.encode("utf-8"))
driver.quit()

# b'<!DOCTYPE html><html xmlns="http://www....

Mein Gedanke ist also, dass das Ausführen mit kopflosem Chrom meine Skript schneller.

Versuchen Sie, Chrome-Optionen wie --disable-extensions oder --disable-gpu zu verwenden, und führen Sie einen Benchmark-Test durch, aber ich würde nicht mit viel Verbesserung rechnen. 


Referenzen: https://developers.google.com/web/updates/2017/04/4/headless-chrome

1
Pedro Lobito

Wenn Sie eine Linux-Umgebung verwenden, müssen Sie möglicherweise auch --no-sandbox sowie bestimmte Fenstergrößeneinstellungen hinzufügen. --no-sandbox wird in Windows nicht benötigt, wenn Sie den Benutzercontainer richtig setzen. 

disable-gpu Nur unter Windows. Andere Plattformen benötigen es nicht mehr. Das Flag --disable-gpu dient zur vorübergehenden Behebung einiger Fehler. 

//Headless chrome browser and configure
            WebDriverManager.chromedriver().setup();
            ChromeOptions chromeOptions = new ChromeOptions();
            chromeOptions.addArguments("--no-sandbox");
            chromeOptions.addArguments("--headless");
            chromeOptions.addArguments("disable-gpu");
//            chromeOptions.addArguments("window-size=1400,2100"); // linux should be activate
            driver = new ChromeDriver(chromeOptions);
0
SDK_90