131 votes

Comment configurer ChromeDriver pour lancer le navigateur Chrome en mode Headless via Selenium ?

Je travaille sur un script python pour le web-scrape et j'ai pris le chemin d'utiliser Chromedriver comme l'un des paquets. J'aimerais que cela fonctionne en arrière-plan sans fenêtres pop-up. J'utilise l'option 'headless' sur Chromedriver et cela semble faire l'affaire en n'affichant pas la fenêtre du navigateur, cependant, je vois toujours le fichier .exe s'exécuter. Voir la capture d'écran de ce dont je parle. Capture d'écran

Voici le code que j'utilise pour lancer ChromeDriver :

options = webdriver.ChromeOptions()
options.add_experimental_option("excludeSwitches",["ignore-certificate-errors"])
options.add_argument('headless')
options.add_argument('window-size=0x0')
chrome_driver_path = "C:\Python27\Scripts\chromedriver.exe"

J'ai essayé de modifier la taille de la fenêtre dans les options en la fixant à 0x0, mais je ne suis pas sûr que cela ait eu un effet puisque le fichier .exe s'affiche toujours.

Avez-vous une idée de la façon dont je peux faire cela ?

J'utilise Python 2.7 pour information.

0 votes

9 votes

@Basj Cette question a un an de plus que la question que vous avez liée. En fait, la question liée serait un doublon possible de celle-ci.

6voto

Aurel Branzeanu Points 346
  1. Le fichier .exe serait de toute façon en cours d'exécution. Selon Google - "Exécuter en mode sans tête, c'est-à-dire sans interface utilisateur ni dépendance vis-à-vis du serveur d'affichage".

  2. Il est préférable de faire précéder les arguments de la ligne de commande de deux tirets, par exemple options.add_argument('--headless')

  3. En mode sans tête, il est également suggéré de désactiver le GPU, c'est à dire options.add_argument('--disable-gpu')

4voto

Sudheer Muhammed Points 310

Essayez d'utiliser ChromeDriverManager

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager 
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.set_headless()
browser =webdriver.Chrome(ChromeDriverManager().install(),chrome_options=chrome_options)
browser.get('https://google.com')
# capture the screen
browser.get_screenshot_as_file("capture.png")

3voto

Elho Points 11

Les solutions ci-dessus ne fonctionnent pas avec les sites Web protégés par cloudflare, par exemple : https://paxful.com/fr/buy-bitcoin .

Modifiez l'agent comme suit : options.add_argument("user-agent=Mozilla/5.0 (Windows NT 6.1 ; Win64 ; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36")

Correction trouvée ici : Quelle est la différence entre l'accès au site Web de Cloudflare à l'aide de ChromeDriver/Chrome en mode normal ou sans tête via Selenium Python ?

1voto

Red Gundu Points 107
from chromedriver_py import binary_path

chrome_options = webdriver.ChromeOptions()
   chrome_options.add_argument('--headless')
   chrome_options.add_argument('--no-sandbox')
   chrome_options.add_argument('--disable-gpu')
   chrome_options.add_argument('--window-size=1280x1696')
   chrome_options.add_argument('--user-data-dir=/tmp/user-data')
   chrome_options.add_argument('--hide-scrollbars')
   chrome_options.add_argument('--enable-logging')
   chrome_options.add_argument('--log-level=0')
   chrome_options.add_argument('--v=99')
   chrome_options.add_argument('--single-process')
   chrome_options.add_argument('--data-path=/tmp/data-path')
   chrome_options.add_argument('--ignore-certificate-errors')
   chrome_options.add_argument('--homedir=/tmp')
   chrome_options.add_argument('--disk-cache-dir=/tmp/cache-dir')
   chrome_options.add_argument('user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36')

  driver = webdriver.Chrome(executable_path = binary_path,options=chrome_options)

0 votes

Ce sont les options de chrome qu'il faut définir pour que chrome fonctionne en mode sans tête avec la dernière version du pilote Chrome 84

1voto

Anuj Bansal Points 67
System.setProperty("webdriver.chrome.driver",
         "D:\\Lib\\chrome_driver_latest\\chromedriver_win32\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--allow-running-insecure-content");
chromeOptions.addArguments("--window-size=1920x1080");
chromeOptions.addArguments("--disable-gpu"); 
chromeOptions.setHeadless(true);
ChromeDriver driver = new ChromeDriver(chromeOptions);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X