Je viens d'installer Selenium pour la première fois et j'ai du mal à démarrer.
L'installation s'est bien passée avec pip
:
pip install Selenium
Et je peux import Selenium
dans Python.
Maintenant, j'essaie d'exécuter le script suivant:
from Selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
Qu'est-ce qui se passe, c'est que Firefox s'ouvre, mais il ne navigue pas vers " http://www.python.org " (semblable au comportement décrit dans cette question - il n'affiche qu'une page vierge)
Pendant environ 60 secondes, rien ne se passe jusqu'à ce que l'exception suivante soit déclenchée:
Traceback (most recent call last):
File "Selenium-test.py", line 4, in <module>
driver = webdriver.Firefox()
File "/home/usr1/.local/lib/python2.6/site-packages/Selenium/webdriver/firefox/webdriver.py", line 61, in __init__
desired_capabilities=capabilities)
File "/home/usr1/.local/lib/python2.6/site-packages/Selenium/webdriver/remote/webdriver.py", line 72, in __init__
self.start_session(desired_capabilities, browser_profile)
File "/home/usr1/.local/lib/python2.6/site-packages/Selenium/webdriver/remote/webdriver.py", line 114, in start_session
'desiredCapabilities': desired_capabilities,
File "/home/usr1/.local/lib/python2.6/site-packages/Selenium/webdriver/remote/webdriver.py", line 165, in execute
self.error_handler.check_response(response)
File "/home/usr1/.local/lib/python2.6/site-packages/Selenium/webdriver/remote/errorhandler.py", line 136, in check_response
raise exception_class(value)
Selenium.common.exceptions.WebDriverException: Message: u'<HTML><HEAD>\r\n<TITLE>Network Error</TITLE>\r\n</HEAD>\r\n<BODY>\r\n<FONT face="Helvetica">\r\n<big><strong></strong></big><BR>\r\n</FONT>\r\n<blockquote>\r\n<TABLE border=0 cellPadding=1 width="80%">\r\n<TR><TD>\r\n<FONT face="Helvetica">\r\n<big>Network Error (tcp_error)</big>\r\n<BR>\r\n<BR>\r\n</FONT>\r\n</TD></TR>\r\n<TR><TD>\r\n<FONT face="Helvetica">\r\nA communication error occurred: "Operation timed out"\r\n</FONT>\r\n</TD></TR>\r\n<TR><TD>\r\n<FONT face="Helvetica">\r\nThe Web Server may be down, too busy, or experiencing other problems preventing it from responding to requests. You may wish to try again at a later time.\r\n</FONT>\r\n</TD></TR>\r\n<TR><TD>\r\n<FONT face="Helvetica" SIZE=2>\r\n<BR>\r\nFor assistance, contact your network support team.\r\n</FONT>\r\n</TD></TR>\r\n</TABLE>\r\n</blockquote>\r\n</FONT>\r\n</BODY></HTML>'
Ce sont les versions du logiciel
Ok, après avoir cherché pendant un moment, j'ai remarqué que le problème était généralement un bogue dans Selenium (possible, mais plutôt improbable) ou un problème de proxy. Pourtant, aucune des réponses suggérant comment résoudre le problème de proxy semblait fonctionner.
Finalement, j'ai compris: vous devez supprimer tous les paramètres de proxy partout (variables d'environnement et, dans mon cas, c'était le problème - sur Gnome). Plus tard, lorsque vous créez le WebDriver, vous devez transmettre un profil définissant les paramètres de proxy du navigateur en fonction de ce que vous utilisez réellement (dans mon cas, une URL de configuration automatique).
1) Désélectionne la variable d'environnement http_proxy
(utilisée par urllib
)
export http_proxy=
2) Paramètres du proxy Gnome effacé: Système -> Préférences -> Proxy réseau -> Sélectionnez "Connexion Internet directe".
3) Started webdriver.Firefox()
avec un profil qui configure le proxy (dans ce cas, il s'agit d'une configuration de proxy automatique)
fp = webdriver.FirefoxProfile()
# Here "2" stands for "Automatic Proxy Configuration"
fp.set_preference("network.proxy.type", 2)
fp.set_preference("network.proxy.autoconfig_url",
"http://proxy-address-here:8080/")
driver = webdriver.Firefox(firefox_profile=fp)
Nécessité de mettre à niveau Selenium. Si vous utilisez la dernière version de Firefox, vous devez utiliser la dernière version de Selenium.
Pour Python, entrez cette commande
pip install -U Selenium
Pour Java, supprimez l'ancien fichier jar et téléchargez la dernière version à partir d'ici http://www.seleniumhq.org/download/ et attachez-le au chemin de génération. Cela fonctionnera trouver. Bon test avec Firefox
Essayez également de désactiver votre serveur Web localhost (127.0.0.1) si vous en avez un sur le port 80 habituel.
Le binaire Firefox ne vous permet pas de charger le profil si un serveur localhost est en cours d'exécution.
Voir la ligne 81 dans Selenium\webdriver\firefox\firefox_binary.py qui pointe vers la fonction/méthode is_connectable (self)
def is_connectable(self):
"""Trys to connect to the extension but do not retrieve context."""
try:
socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket_.settimeout(1)
socket_.connect(("127.0.0.1", self.profile.port))
socket_.close()
return True
except socket.error:
return False
GL HF