Système d'exploitation: Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-1066-aws x86_64)
Version de sélénium: sélénium == 3.6.0
Navigateur: Mozilla Firefox 63.0
Version de geckodriver: geckodriver-v0.19.0-linux64
Créez un nouveau navigateur Firefox et effectuez certaines étapes - analyser le site Web.
Plantage avec un journal: -
self.driver = webdriver.Firefox()
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/firefox/webdriver.py", line 154, in __init__
keep_alive=True)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 151, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 240, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/webdriver.py", line 308, in execute
self.error_handler.check_response(response)
File "/home/ubuntu/env/local/lib/python2.7/site-packages/Selenium/webdriver/remote/errorhandler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
Selenium.common.exceptions.WebDriverException: Message: newSession
Quelqu'un a-t-il déjà rencontré ce problème et a-t-il une solution possible?
MISE À JOUR: Exécutez la commande suivante: geckodriver --log trace & curl -d '{}' 127.0.0.1:4444/session
Journal: - https://Pastebin.com/TirTNKrG
J'ai résolu le problème en mettant à jour le paquet Selenium python et en utilisant le dernier geckodriver.
Merci @fzbd pour toute votre aide.
Merci @skyfail. Votre réponse m'a aidé. La séquence suivante a été effectuée et a résolu le problème.
Pour mettre à niveau Selenium run: Sudo pip3 install Selenium --upgrade
Pour mettre à niveau geckodriver, suivez les étapes 1 à 3 de this
Sudo mv geckodriver /usr/local/bin/geckodriver
,/usr/local/bin est généralement dans votre PATH donc pas besoin de le modifier.Dans votre journal se trouve la ligne suivante:
1540501901605 Geckodriver ERROR Adresse en cours d'utilisation (erreur OS 98)
Ce qui indique que le pilote essaie d'utiliser un port déjà utilisé par un autre processus. Comme le journal n'affiche pas de quel port il s'agit, vous pouvez exécuter le pilote avec strace
:
strace geckodriver 2>&1 | grep -iE 'bind|getsockname'
Dans mon cas, je reçois ces lignes:
bind (3, {sa_family = AF_INET, sin_port = htons (4444), sin_addr = inet_addr ("127.0.0.1")}, 16) = 0
getsockname (3, {sa_family = AF_INET, sin_port = htons (4444), sin_addr = inet_addr ("127.0.0.1")}, [128-> 16]) = 0
Vous pouvez ensuite vérifier quel processus utilise le port (par exemple):
netstat -tulpn | grep -i 4444
Dans mon cas, retour:
tcp 0 0 127.0.0.1:4444 0.0.0.0:* LISTEN 31471/geckodriver
Selon un problème concernant la journalisation du port geckodriver , vous pouvez laisser le système d'exploitation allouer un port libre:
geckodriver --port 0
Si tout cela ne fonctionne pas, il peut y avoir une incompatibilité entre votre version de geckodriver et Selenium, comme cette erreur dans le journal semble suggérer:
geckodriver :: marionette TRACE <- [1,1, {"error": "unknown command", "message": "newSession", "stacktrace": "WebDriverError @ chrome: //marionette/content/error.js: 178 : 5
J'utilise les versions suivantes: