我有一个单元测试,当我通过 python manage.py test
运行它时它通过了,但是当我从 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()
我从 PyCharm 运行时遇到的异常是
WebDriverException: Message: 'Can not connect to GhostDriver'
我花了相当多的时间来研究这个问题,我注意到当我手动指定一个端口时,测试在 PyCharm 中通过。
# suppose 50000 happens to be a free port on your computer
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000)
快速回顾一下:
- 测试通过
python manage.py test
- 如果手动指定端口,则在 PyCharm 中测试通过
- 如果
port=free_port()
,则在 PyCharm 中测试失败
PyCharm 做了什么导致测试无法连接到 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
最佳答案
您的终端设置中的某些东西可能会影响网络。
尝试从您的终端启动 PyCharm:
open -a /Applications/PyCharm.app/
然后再次运行测试,应该可以通过。
来源:@CrazyCoder 的评论总结
关于python - PyCharm 无法连接到 GhostDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17827448/