2016-02-22 61 views
1

所以,我對此很好奇。Django,防火牆,Selenium,[Errno 10061]和implicitly_wait()

我一直在嘗試TDD與Django,並採取哈里J.W.鍛鍊。 Percival的書如下:

from selenium import webdriver 
import unittest 

class NewVisitorTest(unittest.TestCase): 

    def setUp(self): 
     self.browser = webdriver.Chrome() 

    def tearDown(self): 
     self.browser.quit() 


    def test_can_start_list_and_retrieve_later(self): 
     self.browser.get('http://localhost:8000') 
     self.browser.implicitly_wait(3) 

     self.assertIn('Django', self.browser.title) 

看起來很簡單。 除非我得到這個失敗的測試:
error: [Errno 10061] No connection could be made because the target machine actively refused it

因此,我相信我有某種防火牆起來(我會感激,如果你能告訴我到)。然而最奇怪的是: 如果我運行腳本時省略了這一行,但是:self.browser.implicitly_wait(3)

測試很奇怪地通過了。

當我在測試不及格,Django的說以下內容:

Not Found: /favicon.ico 
[22/Feb/2016 09:34:38] "GET /favicon.ico HTTP/1.1" 404 1940 

如果這是任何相關性:
操作系統爲Windows 10 IDE是PyCharm社區(因此Django是在PowerShell中正在運行) 測試框架Unittest.py

回答

1

Chrome需要符合其安裝在您的機器上的Chrome版本特定的驅動程序:

self.browser = webdriver.Chrome("/path/to/chromedriver") 

下載chromedrive並將其複製到「/路徑/到/ chromedriver」從https://sites.google.com/a/chromium.org/chromedriver/downloads

注:對於Firefox它是確定使用webdriver.Firefox()

+0

我有Chrome和chromedriver.exe的最新版本(它位於Django項目的目錄中)。 我仍然收到錯誤。據我所知,不匹配也不能解釋爲什麼「implicitly_waits()」決定測試通過還是失敗。 也許它與另一個錯誤有關,也就是說,當我嘗試將測試添加到Django應用程序時,我得到: '錯誤配置:請求設置DATABASES,但設置未配置。在訪問設置之前,您必須定義環境變量DJANGO_SETTINGS_MODULE或調用settings.configure()。# –

+0

這很正常。簡單的等待解決很多硒否則很難解釋問題。等待是我第一次接觸到Selenium問題。 –