14 votes

Selenium ChromeDriver ne reconnaît pas la nouvelle compilation de Headless Chromium (Python)

J'essaie d'utiliser le nouveau (2016) sans tête version de Chromium avec Selenium/ChromeDriver (Dans le passé, j'ai utilisé Firefox avec xfvb mais cela promet d'être bien meilleur).

J'ai compilé une version headless de Chromium à partir des sources (je n'ai pas trouvé de binaires pré-construits) en me basant sur les instructions que j'ai trouvées. aquí et j'ai ensuite utilisé le code suivant pour le lancer via Selenium :

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

l_option = Options()
l_option.add_argument('headless')
l_option.add_argument('disable-notifications')
l_option.binary_location = '/home/fi11222/Headless_Chromium/headless_shell'
l_driver = webdriver.Chrome(chrome_options=l_option)

Le même code fonctionne avec le chrome standard (si je supprime l'option binary.location option)

En l'état, cependant, j'obtiens l'erreur suivante :

selenium.common.exceptions.WebDriverException: Message: unknown error: unrecognized Chrome version: HeadlessChrome/59.0.3032.0
  (Driver info: chromedriver=2.27.440175 (9bc1d90b8bfa4dd181fbbf769a5eb5e575574320),platform=Linux 4.4.0-53-generic x86_64)

Apparemment, le binaire chromium headless est compilé avec un ID de version que ChromeDriver ne reconnaît pas. Au secours ! !

Environnement :

  • Compilation : Serveur Ubuntu 16.04
  • Exécution du sélénium : Linux Mint 18.1

12voto

Mirosław Zalewski Points 3062

ChromeHeadless est reconnu par chromedriver depuis ce patch (créé après que vous ayez posté votre message), qui n'est disponible que depuis chromedriver 2.29 (publié en avril 2017). Assurez-vous que vous avez cet exécutable chromedriver disponible dans PATH et que Selenium le choisit à la place de tout autre chromedriver que vous pourriez avoir disponible.

Veuillez également noter que - selon documentation sur Chrome sans tête - vous devez passer deux autres drapeaux :

l_option.add_argument('remote-debugging-port=9222')
l_option.add_argument('disable-gpu')

Quant aux binaires préconstruits de Chrome sans tête, cette option est disponible depuis Chrome 57, elle est donc prise en charge par toutes les versions actuellement distribuées par le dépôt officiel de Google (c'est-à-dire Chrome 58 stable et Chrome 59 instable). C'est le point fort de Chrome 59 Il faut donc s'attendre à ce qu'il y ait des irrégularités jusqu'à ce que la fonction soit stabilisée.

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