J'aimerais construire mon robot d'exploration en utilisant Selenium sur mon serveur.
Ainsi, j'avais installé/téléchargé les dépendances requises, telles que chromedriver, navigateur chrome, etc. sur mon serveur Ubuntu17.10
Cependant, quand je lance le code suivant:
driver = webdriver.Chrome()
Il retourne l'erreur suivante:
---------------------------------------------------------------------------
WebDriverException Traceback (most recent call last)
<ipython-input-14-2cdab8938403> in <module>()
----> 1 driver = webdriver.Chrome()
/home/zachary/.local/lib/python3.6/site-packages/Selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options)
66 service_args=service_args,
67 log_path=service_log_path)
---> 68 self.service.start()
69
70 try:
/home/zachary/.local/lib/python3.6/site-packages/Selenium/webdriver/common/service.py in start(self)
96 count = 0
97 while True:
---> 98 self.assert_process_still_running()
99 if self.is_connectable():
100 break
/home/zachary/.local/lib/python3.6/site-packages/Selenium/webdriver/common/service.py in assert_process_still_running(self)
109 raise WebDriverException(
110 'Service %s unexpectedly exited. Status code was: %s'
--> 111 % (self.path, return_code)
112 )
113
WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127
Qu'est-ce que cela signifie que c'est excité ..?
Je ne peux pas comprendre quelle était l'intention initiale de ce code d'erreur et par où commencer pour le corriger.
Il semble très rare cas.
Peut-être pertinent:
J'avais installé ubuntu desktop 17.10 sur mon bureau mais je n'ai pas réussi à obtenir le démarrage via l'interface graphique. Ainsi, je n’utilise que le terminal, mais cela fonctionne jusqu’à présent . J’avais installé ssh et jupyter notebook à distance depuis mon Mac sur le bureau du serveur, et ces erreurs en découlent . J'espère que cette information est pertinente. résoudre cette erreur, sinon l'abandonnera.
Il semble que chromedriver
a besoin de bibliothèques supplémentaires. Cela a résolu le problème pour moi:
apt-get install -y libglib2.0-0=2.50.3-2 \
libnss3=2:3.26.2-1.1+deb9u1 \
libgconf-2-4=3.2.6-4+b1 \
libfontconfig1=2.11.0-6.7+b1
Je travaillais sur une configuration similaire en utilisant un conteneur Docker au lieu d'un serveur/VM sans X/GUI.
Pour déterminer quelles dépendances sont nécessaires, j'ai essayé de manière répétée de l'exécuter à partir de la ligne de commande, comme suit: /opt/chromedriver/2.33/chromedriver --version
encore et encore.
Puis, à chaque heure, j’ai utilisé des commandes telles que apt-cache search <STUFF>
et apt-cache madison <STUFF>
pour déterminer la version exacte du paquetage deb
requise par chromedriver
2.33 (dans mon cas, mais j’imagine que quelque chose de similaire fonctionnerait pour n’importe quelle version de chromedriver
).
J'ai rencontré la même erreur lors de l'utilisation de Selenium/chromedriver sur mon VPS. J'ai installé chromium-browser
et le problème a disparu.
Sudo apt-get install -y chromium-browser
Peut-être que ce n'est pas le chromium-browser
qui est nécessaire, mais les paquetages ont été installés avec. Cependant, c'était une solution rapide.
Résolu en retirant soigneusement le pilote chromed existant et en le mettant à jour vers une version plus récente:
wget https://chromedriver.storage.googleapis.com/2.46/chromedriver_linux64.Zip
(remplacez le bit 2.46 par le plus récent, voir les versions compatibles ici: http://chromedriver.chromium.org/downloads )chmod +x chromedriver
mv -f chromedriver /usr/local/bin/chromedriver
pour qu'il apparaisse dans PATHCela devrait résoudre un problème. Je pensais que la mise à jour ne fonctionnait pas, car lorsque je l'ai essayée pour la première fois, je n'ai pas supprimé l'ancienne version et je l'utilisais encore accidentellement.
Lorsque vous travaillez avec Selenium v3.11.0, ChromeDriver v2.36 et Chrome v64.x, vous devez télécharger le dernier ChromeDriver à partir de ChromeDriver - WebDriver pour Chrome et placez-le dans votre système. Ensuite, lors de l'initialisation de WebDriver et de WebBrowser, vous devez transmettre l'argument executable_path
ainsi que le chemin absolu de ChromeDriver comme suit:
from Selenium import webdriver
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')
driver.get("http://www.python.org")
J'ai eu le même problème, et le problème était dû à la version de chromedriver.
Assurez-vous que vous utilisez les dernières navigateur Chrome avec les dernières chromedriver .