2013-07-24 16 views
12

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 
+0

Cosa restituisce 'free_port()' in PyCharm? Quale sistema operativo utilizzi? – CrazyCoder

+0

Uso OS X - e free_port() di solito restituisce una porta tra 50000-60000. –

+4

Ti aiuta se avvii PyCharm dal Terminale: 'apri -a/Applicazioni/PyCharm.app /'? – CrazyCoder

risposta

Problemi correlati