I have a unit test that is passing when I run it via python manage.py test
, but failing when I run it from within 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()
The exception I get when running from PyCharm is
WebDriverException: Message: 'Can not connect to GhostDriver'
I've spent a fair amount of time digging into this problem, and I've noticed that when I specify a port manually the test passes within PyCharm.
# suppose 50000 happens to be a free port on your computer driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000)
To quickly recap:
python manage.py test
port=free_port()
What is PyCharm doing that is making the test unable to connect to 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
Something in your terminal setup probably influences the networking.
Try to start PyCharm from your terminal:
open -a /Applications/PyCharm.app/
Then run the test again, and it should pass.
Source: sum-up of @CrazyCoder's comments
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With