2013-07-24 24 views
12

Ich habe einen Komponententest, der ausgeführt wird, wenn ich ihn über python manage.py test starte, aber fehlgeschlagen, wenn ich ihn innerhalb von PyCharm ausführe.PyCharm kann keine Verbindung zu GhostDriver herstellen

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() 

Die Ausnahme, die ich, wenn sie von PyCharm Laufen zu bringen ist

WebDriverException: Message: 'Can not connect to GhostDriver' 

ich eine Menge Zeit in dieses Problem zu graben verbracht habe, und ich habe bemerkt, dass, wenn ich die einen Port manuell angeben Test läuft innerhalb von PyCharm.

# suppose 50000 happens to be a free port on your computer 
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000) 

Um schnell rekapitulieren:

  • -Test geht mit python manage.py test
  • -Test in PyCharm passiert, wenn Port manuell angegeben wird
  • Test nicht in PyCharm wenn port=free_port()

Was ist Dadurch kann PyCharm den Test nicht mit Ghostdriver verbinden?


# 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

Was gibt 'free_port()' in PyCharm zurück? Welches Betriebssystem verwenden Sie? – CrazyCoder

+0

Ich benutze OS X - und free_port() gibt normalerweise einen Port zwischen 50000-60000 zurück. –

+4

Hilft es, wenn Sie PyCharm vom Terminal aus starten: 'open -a/Applications/PyCharm.app /'? – CrazyCoder

Antwort

Verwandte Themen