2013-07-24 162 views
12

我有一个单元测试,当我通过python manage.py test运行时传递,但在PyCharm中运行时失败。PyCharm无法连接到GhostDriver

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) 

快速回顾一下:如果端口手动指定

  • 测试中PyCharm失败如果port=free_port()
  • 什么是

    • 测试与python manage.py test
    • 测试通过在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 
      
    +0

    PyCharm中的'free_port()'返回什么?你使用什么操作系统? – CrazyCoder

    +0

    我使用OS X,而free_port()通常返回50000-60000之间的端口。 –

    +4

    如果从终端启动PyCharm,它有帮助吗:'open -a/Applications/PyCharm.app /'? – CrazyCoder

    回答