2011-12-05 17 views
3

我們已經使用Watin和CruiseControl.net幾個星期了,大多數時候它們都能很好地協同工作。我們在開發人員機器上運行測試沒有任何問題。登錄到CI服務器後,我們也可以交互式運行測試而不會出現任何問題。使用Nant和CruiseControl運行Watin測試時發生間歇性IE超時和COMExceptions

大多數時候在CruiseControl下執行測試時也沒有問題,但這並非總是如此,因爲我們最近發現間歇性錯誤。這些錯誤似乎來去有點隨機,但是當錯誤確實發生,它總是下列之一:

  1. WatiN.Core.Exceptions.TimeoutException:超時而Internet Explorer的忙

  2. 系統。 Runtime.InteropServices.COMException:800704a6

我們的CI服務器環境是:由於以下錯誤創建具有CLSID {0002DF01-0000-0000-C000-000000000046}從失敗的IClassFactory的COM組件的實例:

  • 的Windows Server 2008 R2

  • IIS 7.5

  • IE 8

  • 華廷2.0

  • CruiseControl的1.6.7981.1。這是作爲服務運行的,它以用戶身份登錄我們的域,因爲測試需要訪問域上的資源。

的 '隨機' 測試失敗創建自己的IE實例如下:

[TestMethod] 
    public void SomeTest() 
    { 
     using (var browser = new IE()) 
     { 
      // run tests here 
     } 
    } 

我也試過在一個新的進程創建IE如下:

[TestMethod] 
    public void SomeTest() 
    { 
     using (var browser = new IE(true)) 
     { 
      // run tests here 
     } 
    } 

但是,當我那麼,全部我們的測試失敗,出現「WatiN.Core.Exceptions.BrowserNotFoundException:無法找到匹配約束的IE窗口:超時等待附加到新創建的IE實例..搜索「30」秒」

所以,我有兩個問題之後過期:

  1. 誰能告訴我怎麼可以停止超時和COM異常?
  2. 任何人都可以解釋爲什麼IE瀏覽器(真)根本不工作?

TIA, 邁克

回答

2

看到這個答案由卡爾·霍伯格:
Running Watin on TeamCity

CruiseControl的。Net和TeamCity在作爲服務運行時有相同的問題,解決方法應該適用於這兩種環境。

默認情況下,ccservice作爲本地系統運行,無權訪問與桌面用戶界面進行交互,並且本地系統帳戶權限有限,這很可能是導致引發TimeoutException,COMException和BrowserNotFoundException的原因。