selenium.common.exceptions.WebDriverException: Message: 'Impossible de se connecter à GhostDriver'
Je suis en train de lancer PhantomJS
de l'intérieur selenium.webdriver
sur un serveur Centos. PhantomJS est dans le chemin d'accès et le bon fonctionnement de la borne. Toutefois, dans le script, ça semble être lancé, mais par la suite, ne peut pas être atteint sur le port spécifié (j'ai essayé 2 différentes ouvert les ports de mon fournisseur 29842 et 60099, ils ne travaillent pas et ni le lancer sans un port spécifié).
L'erreur se produit ici dans selenium.webdriver.common.utils
:
try:
socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_.settimeout(1)
socket_.connect(("localhost", port))
socket_.close()
return True
except socket.error:
return False
C'est à partir de mon script (j'ai essayé sans les paramètres ainsi que l'écrit le chemin complet de l'exécutable et ni travaillé):
self.browser = webdriver.PhantomJS(
port=29842,
desired_capabilities={
'javascriptEnabled': True,
'platform': 'windows',
'browserName': 'Mozilla',
'version': '5.0',
'phantomjs.page.settings.userAgent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36"
}
)
Et ce le script initialise le webdriver de selenium.webdriver.phantomjs.service
. J'ai vérifié et subprocess.Popen
fait lauches phantomjs, l'erreur se produit dans la boucle while:
try:
self.process = subprocess.Popen(self.service_args,
stdout=self._log, stderr=self._log)
except Exception as e:
raise WebDriverException("Unable to start phantomjs with ghostdriver.", e)
count = 0
while not utils.is_connectable(self.port):
print utils.is_connectable(self.port)
count += 1
time.sleep(1)
if count == 30:
raise WebDriverException("Can not connect to GhostDriver")
De tous les logiciels sont la version la plus récente: python 2.7, le sélénium 2 et phantomjs 1.9 binaire avec ghostdriver intégré. J'ai fait le même script fonctionne correctement sur mon Ubuntu machine locale, en train de faire exactement les mêmes choses que j'ai fait sur le serveur. Ce qui est différent sur le serveur?
source d'informationauteur symbiotech
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème sur Ubuntu après la mise à niveau vers une nouvelle version. Je l'ai ré-installé tous les nodejs et les paquets python, mais ce que je pense a résolu le problème a été de s'assurer la
nodejs
exécutable a été symboliquement lié ànode
.Ce sont les commandes que j'ai utilisé:
L'installation de nodejs-héritage paquet sur Linux Mint 14 résolu pour moi.
Pour moi, c'était un problème de firewall. Phantom nécessite un port ouvert pour vous connecter. Si le port est bloqué par un pare-feu, vous aurez
WebDriverException("Can not connect to GhostDriver")
.À corriger:
sudo iptables -A INPUT -s 127.0.0.1 -p tcp --dport 65000 -j ACCEPT
driver = webdriver.PhantomJS(executable_path='/usr/local/bin/phantomjs', port=65000)
J'ai eu ce problème et a découvert ce qui était à l'origine. Dans un autre tutoriel sur le développement de Facebook applications, on m'a dit de nano /etc/hosts et de le modifier à partir de ce-
-
et enregistrez le fichier. D'ailleurs, PhantomJS() ne fonctionnait plus après cela. Je suis juste allé en arrière dans le fichier /etc/hosts et commuté retour à localhost
et il fonctionne à nouveau.
Je suis en train de tester un python/django application à l'aide de sélénium avec phantomjs. Tout a bien fonctionné lors de la première (et parfois de la deuxième test), mais une fois en marche, le prochain test, le sélénium imprimé exactement le même message d'erreur.
En outre, si j'ai couru phantomjs à partir de la console par la suite, j'ai reçu le nœud suivant erreur:
J'ai essayé de réinstaller phantomjs via npm (à la fois localement et à l'échelle mondiale) plusieurs fois, mais le comportement persiste.
Finalement, j'ai désinstallé phantomjs via npm et téléchargé le phantomjs bin à partir de phantomjs.org à la place. Mettre à l'intérieur de mon /usr/local/bin (je suis sur MacOS) et se débarrasser de l'erreur depuis!