【问题标题】:Intermittent IE timeouts and COMExceptions when running Watin tests with Nant and CruiseControl使用 Nant 和 CruiseControl 运行 Watin 测试时出现间歇性 IE 超时和 COMExceptions
【发布时间】:2012-01-13 08:51:37
【问题描述】:

我们已经使用 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 服务器环境是:

  • 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(true) 根本不起作用?

TIA, 迈克

【问题讨论】:

    标签: cruisecontrol.net watin


    【解决方案1】:

    查看 Carl Hörberg 的回答:
    Running Watin on TeamCity

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2010-09-16
      • 2017-07-22
      • 2018-03-21
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多