【发布时间】:2012-01-13 08:51:37
【问题描述】:
我们已经使用 Watin 和 CruiseControl.net 几个星期了,大部分时间它们都可以很好地协同工作。我们在开发人员机器上运行测试没有任何问题。当登录到 CI 服务器时,我们还能够以交互方式运行测试而不会出现问题。
大多数时候,在 CruiseControl 下执行测试时也没有问题,但情况并非总是如此,因为我们最近看到了间歇性错误。错误似乎来来去去有点随机,但当确实发生错误时,它总是以下之一:
WatiN.Core.Exceptions.TimeoutException:Internet Explorer 忙时超时
-
System.Runtime.InteropServices.COMException:由于以下错误,从 IClassFactory 创建 CLSID 为 {0002DF01-0000-0000-C000-000000000046} 的 COM 组件实例失败:800704a6
我们的 CI 服务器环境是:
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' 秒后过期”
所以,我有两个问题:
- 谁能告诉我如何停止超时和 com 异常?
- 谁能解释一下为什么 IE(true) 根本不起作用?
TIA, 迈克
【问题讨论】: