python - PyCharm 无法连接到 GhostDriver

标签 python unit-testing selenium-webdriver phantomjs pycharm

我有一个单元测试,当我通过 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/

相关文章:

python - 如何从字典和特定列中删除键?

c# - 测试更多输入

java - 为什么我不能使用 captureNetworkTraffic ("");与IE

python - add_experimental_option() 缺少 1 个必需的位置参数 : 'value'

python - 这段 python 代码中的文档字符串有什么用?

python - 添加到整数列表的列表

ruby - 你如何模拟 RSpec 中的 break 语句?

javascript - 如何通过管道将代码和单元测试传递给 npm test?

html - 基于文本的跨度的 XPath?

python - psycopg2.OperationalError : FATAL: database does not exist