web-dev-qa-db-fra.com

Exécution de Selenium avec Webdriver Chrome sans tête

Donc, je suis en train d'essayer quelque chose avec Selenium et je veux vraiment que ce soit rapide.

Donc, je pense que le faire fonctionner avec du chrome sans tête rendrait mon script plus rapide.

Tout d’abord, cette hypothèse est-elle correcte ou n’importe-t-il pas si je lance mon script avec un pilote sans tête?

Quoi qu'il en soit, je veux toujours que cela fonctionne sans fonctionner, mais je ne peux pas, j'ai essayé différentes choses et la plupart ont suggéré que cela fonctionnerait comme indiqué dans la mise à jour d'octobre

Comment configurer ChromeDriver pour lancer le navigateur Chrome en mode sans tête via Selenium?

Mais quand j'essaye ça, j'ai une sortie de console bizarre et ça ne semble toujours pas fonctionner.

Toute pointe appréciée.

2
Rhynden

Pour exécuter chrome-headless, ajoutez simplement --headless via chrome_options.add_argument, c.-à-d.:

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....

Donc, je pense que le faire fonctionner avec du chrome sans tête rendrait mon script plus rapide.

Essayez d’utiliser des options de chrome telles que --disable-extensions ou --disable-gpu et faites une analyse comparative, mais je n’aurais aucune amélioration notable. 


Références: https://developers.google.com/web/updates/2017/04/headless-chrome

1
Pedro Lobito

Si vous utilisez l'environnement linux, vous devrez peut-être également ajouter --no-sandbox ainsi que des paramètres de taille de fenêtre spécifiques. --no-sandbox n'est pas nécessaire dans Windows si vous définissez correctement le conteneur d'utilisateurs. 

disable-gpu uniquement sous Windows. Les autres plates-formes n'en ont plus besoin. Le drapeau --disable-gpu est un moyen temporaire de résoudre quelques bugs. 

//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