2011-07-14 34 views
2

我有一些SpecFlow功能使用Selenium 2來自動化ASP.NET MVC 3應用程序的一些UI測試。當我在本地運行時,運行良好,測試通過。一旦將我對Git的更改提交併將提交推送到我們的遠程存儲庫以供TeamCity實例使用,測試運行並花費更長的時間,但只會失敗並顯示以下內容。SpecFlow + Selenium2 + ASP.NET MVC + TeamCity不工作

Test(s) failed. OpenQA.Selenium.WebDriverException : No response from server for url http://localhost:7055/hub/session/1ada0501-154a-45f7-b0a3-487af59f7a0b/timeouts/implicit_wait 

我試圖與零運氣找到任何遠程相關的搜索各地的各種解決方案。如果任何人都可以鏈接到任何可以讓我的生活更輕鬆的資源,請隨時分享。或者幫助解決這個問題。

回答

1

我不知道答案,但這裏是或與以下設置爲我們工作相關的代碼:

  • 的TeamCity(6.0.3)
  • IIS(從修復虛擬文件夾)
  • ASP.NET MVC3
  • SeleniumDotNet V2.0.3
  • FireFox的司機,
  • 服務器上的Firefox版本:3.6.17
  • TeamCity的運行作爲本地系統(默認)

硒設置:

public static readonly TimeSpan DefaultTimeout = TimeSpan.FromSeconds(10); 

private BrowserContext() 
{ 
    //browser = new InternetExplorerDriver(); 
    browser = new FirefoxDriver(); 
    browser.Manage().Timeouts().ImplicitlyWait(DefaultTimeout); 
} 

安裝/拆卸火狐SpecFlow事件:

 [BeforeScenario] 
     public void BeforeWebScenario() 
     { 
      if (!BrowserContext.IsRunning) 
       BrowserContext.Start(); 

      BrowserContext.Current.Browser.NavigateTo("/Test/RecreateDatabase"); 
      BrowserContext.Current.Browser.FindElement(By.ClassName("success-message")); 
     } 

     [AfterScenario] 
     public void AfterWebScenario() 
     { 
      if (ScenarioContext.Current.TestError != null) 
      { 
       Console.WriteLine("Browser page source for failing test: {0}", 
        BrowserContext.Current.Browser.PageSource); 
      } 

      bool browserPerScenario; 
      if (bool.TryParse(ConfigurationManager.AppSettings["browserPerScenario"], out browserPerScenario) && browserPerScenario) 
       BrowserContext.Stop(); 
     } 

     [AfterTestRun()] 
     public static void StopBrowser() 
     { 
      if (BrowserContext.IsRunning) 
       BrowserContext.Stop(); 
     } 
+0

IsRunning屬性和Start()和Stop()方法是做什麼的。你能發佈完整的相關'BrowserContext'嗎? –

0

瞎猜,我覺得這是罪犯:

:7055 

最有可能的,你是在本地運行內置的ASP.NET開發服務器和更全功能的Web服務器上運行(最有可能的IIS)在另一臺服務器上。除非您的服務器從非標準端口(上述端口)運行,否則您將失敗。

有一點需要考慮的是從ASP.NET開發服務器轉移到IIS(或IIS Express)。然後,您可以使用本地主機和無端口來設置站點。

+0

我使用的是IIS在本地和在構建服務器上進行快速宿主,並且它們都在相同的端口上運行。我粘貼的行中的URL是Selenium 2,它明顯嘗試連接到或什麼,它不是我的Web項目的URL。 –