我们一直在使用Watin和CruiseControl.net几个星期,而且大部分时间他们都在一起工作。我们在开发人员计算机上运行测试时没有遇到任何问题。登录到CI服务器时,我们还能够以交互方式运行测试而不会出现问题。
大多数情况下,在CruiseControl下执行测试时也没有问题,但情况并非总是如此,因为我们最近看到了间歇性错误。错误似乎随机而来,但是当发生错误时,它总是出现以下情况之一:
WatiN.Core.Exceptions.TimeoutException:Internet Explorer忙碌时超时
System.Runtime.InteropServices.COMException:由于以下错误,从IClassFactory创建具有CLSID {0002DF01-0000-0000-C000-000000000046}的COM组件实例失败:800704a6
< / LI> 醇>我们的CI服务器环境是:
Windows Server 2008 R2
IIS 7.5
IE 8
Watin 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秒”后过期“
所以,我有两个问题:
TIA, 麦克
答案 0 :(得分:2)
见CarlHörberg的回答:
Running Watin on TeamCity
CruiseControl.Net和TeamCity在作为服务运行时遇到同样的问题,并且解决方案适用于两种环境。
默认情况下,ccservice作为本地系统运行,无权与桌面UI交互,并且本地系统帐户权限受到限制,这很可能是导致抛出TimeoutException,COMException和BrowserNotFoundException的原因。