cruisecontrol.net - 使用 Nant 和 CruiseControl 运行 Watin 测试时出现间歇性 IE 超时和 COMExceptions

标签 cruisecontrol.net watin

我们已经使用 Watin 和 CruiseControl.net 几个星期了,大多数时候它们一起工作得很好。我们在开发人员机器上运行测试没有遇到任何问题。当登录到 CI 服务器时,我们还能够以交互方式运行测试而不会出现问题。

大多数情况下,在 CruiseControl 下执行测试时也没有问题,但情况并非总是如此,因为我们最近看到间歇性错误。错误似乎随机出现和消失,但当确实发生错误时,它总是以下之一:

  1. WatiN.Core.Exceptions.TimeoutException:Internet Explorer 繁忙时超时

  2. System.Runtime.InteropServices.COMException:由于以下错误,从 IClassFactory 创建 CLSID 为 {0002DF01-0000-0000-C000-000000000046} 的 COM 组件实例失败:800704a6

我们的 CI 服务器环境是:

  • window 服务器 2008 R2

  • IIS 7.5

  • IE 8

  • Watin 2.0

  • 巡航控制 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 窗口匹配约束:WAITING附加到新创建的实例时超时” IE .. 搜索在“30”秒后过期”

所以,我有两个问题:

  1. 谁能告诉我如何停止超时和 com 异常?
  2. 谁能解释为什么 IE(true) 根本不起作用?

TIA, 迈克

最佳答案

请参阅 Carl Hörberg 的回答:
Running Watin on TeamCity

CruiseControl.Net 和 TeamCity 在作为服务运行时遇到同样的问题,解决方法应该适用于这两种环境。

默认情况下,ccservice 作为本地系统运行,无权与桌面 UI 交互,并且本地系统帐户权限受到限制,这很可能是导致 TimeoutException、COMException 和 BrowserNotFoundException 被抛出的原因。

关于cruisecontrol.net - 使用 Nant 和 CruiseControl 运行 Watin 测试时出现间歇性 IE 超时和 COMExceptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8388292/

相关文章:

integration-testing - 等待测试数据重置/清理

service - CruiseControl.NET 无法建立连接?

nunit - 将 NUnit 测试的控制台输出放入 XML 结果中

cruisecontrol.net - 发布者 block 中的 cc.net 动态参数

git - CruiseControl.NET 卡在带有 TFS 的 git-submodule 错误文件描述符上

javascript - 如何查找已使用 WatiN 打开的 JavaScript 警报

svn - 持续集成中的清洁构建

c# - Watin 不会手动触发 .change() 事件

windows-7 - 在使用 IE 8 的 Windows 7 上运行 WatiN 时遇到问题

c# - 大量使用 Watin,IE 保持打开问题