2013-07-24 43 views
12

Tôi có một bài kiểm tra đơn vị được truyền khi tôi chạy nó qua python manage.py test, nhưng không thành công khi tôi chạy nó từ bên trong PyCharm.PyCharm không thể kết nối với 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() 

Ngoại lệ tôi nhận được khi chạy từ PyCharm là

WebDriverException: Message: 'Can not connect to GhostDriver' 

Tôi đã dành một số tiền hợp lý của thời gian đào sâu vào vấn đề này, và tôi đã nhận thấy rằng khi tôi chỉ định một cổng bằng tay các kiểm tra vượt qua trong PyCharm.

# suppose 50000 happens to be a free port on your computer 
driver = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, port=50000) 

Để nhanh chóng tóm tắt lại:

  • thử đi với python manage.py test
  • thử nghiệm đi trong PyCharm nếu cổng được chỉ định bằng tay
  • thử nghiệm thất bại trong PyCharm nếu port=free_port()

là gì PyCharm làm điều đó là làm cho thử nghiệm không thể kết nối với 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

Trả lại 'free_port()' trong PyCharm là gì? Bạn sử dụng hệ điều hành nào? – CrazyCoder

+0

Tôi sử dụng OS X - và free_port() thường trả về một cổng giữa 50000-60000. –

+4

Nó có giúp ích gì nếu bạn khởi động PyCharm từ Terminal: 'open -a/Applications/PyCharm.app /'? – CrazyCoder

Trả lời