Ho un test di unità che sta passando quando lo eseguo tramite python manage.py test
, ma non riesco a eseguirlo da PyCharm.PyCharm non è in grado di connettersi a GhostDriver
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()
L'eccezione che provo quando va dal PyCharm è
WebDriverException: Message: 'Can not connect to GhostDriver'
Ho passato un bel po 'di tempo a scavare in questo problema, e ho notato che quando ho specificare una porta manualmente il passaggi di prova all'interno di PyCharm.
# suppose 50000 happens to be a free port on your computer
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000)
Per ricapitolare rapidamente:
- test passa con
python manage.py test
- prova passa in PyCharm se la porta è specificato manualmente
- test non riesce in PyCharm se
port=free_port()
Che cosa è In questo modo PyCharm sta rendendo impossibile il test per connettersi 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
Cosa restituisce 'free_port()' in PyCharm? Quale sistema operativo utilizzi? – CrazyCoder
Uso OS X - e free_port() di solito restituisce una porta tra 50000-60000. –
Ti aiuta se avvii PyCharm dal Terminale: 'apri -a/Applicazioni/PyCharm.app /'? – CrazyCoder