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
Was gibt 'free_port()' in PyCharm zurück? Welches Betriebssystem verwenden Sie? – CrazyCoder
Ich benutze OS X - und free_port() gibt normalerweise einen Port zwischen 50000-60000 zurück. –
Hilft es, wenn Sie PyCharm vom Terminal aus starten: 'open -a/Applications/PyCharm.app /'? – CrazyCoder