PyCharm no puede conectarse a GhostDriver
Tengo una prueba de unidad que pasa cuando la ejecuto a través depython manage.py test
, pero fallando cuando lo ejecuto desde dentro de PyCharm.
def test_alpha(self):
from selenium.webdriver.common.utils import free_port
from selenium import webdriver
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=free_port())
driver.quit()
La excepción que recibo cuando corro desde PyCharm es
WebDriverException: Message: 'Can not connect to GhostDriver'
He pasado bastante tiempo investigando este problema, y he notado que cuando especifico un puerto manualmente, la prueba pasa dentro de PyCharm.
# suppose 50000 happens to be a free port on your computer
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000)
Para recapitular rápidamente:
Prueba pasa conpython manage.py test
La prueba pasa en PyCharm si el puerto se especifica manualmentePrueba falla en PyCharm siport=free_port()
¿Qué está haciendo PyCharm para que la prueba no pueda conectarse a Ghostdriver?
# For convenience, the `free_port()` code snippet is here
# selenium.webdriver.common.utils.freeport
def free_port():
free_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
free_socket.bind(('127.0.0.1', 0))
free_socket.listen(5)
port = free_socket.getsockname()[1]
free_socket.close()
return port