运行WatiN测试时的InteropServices.COMException

时间:2009-06-02 12:42:39

标签: nunit watin

当我在构建服务器上运行WatiN测试时,他们都抛出了这个InteropServices.COMException:

MyTestClassName.MyTestMethodName: System.Runtime.InteropServices.COMException:由于以下错误,从IClassFactory创建具有CLSID {0002DF01-0000-0000-C000-000000000046}的COM组件实例失败:80004005。

我通过TeamCity运行它们得到相同的结果,或者我使用NUnit GUI(2.5)作为管理员在服务器上手动运行它们。

这是一些示例代码:

[TestFixture]
public class MyTestClassName
{
    private string pageUrl;

    [TestFixtureSetUp]
    public void TestFixtureSetUp()
    {
        pageUrl = ConfigurationManager.AppSettings["SiteURL"] + "/Pages/MyPage.aspx";

        Settings.MakeNewIeInstanceVisible = false;
    }

    [Test]
    public void MyTestMethodName()
    {
        using (var ie = new IE(pageUrl))
        {
            ie.SelectList(new Regex(@"^*DropDownList1*$")).Option("TheOption").Select();

            ie.SelectList(new Regex(@"^*DropDownList2*$")).Option("AnOption").Select();

            ie.SelectList(new Regex(@"^*DropDownList3*$")).Option("OtherOption").Select();

        }
    }
}

任何想法可能是什么?

/乔金姆

6 个答案:

答案 0 :(得分:6)

尝试以管理员身份运行Visual Studio。

答案 1 :(得分:5)

我也遇到同样的问题,但对我来说更奇怪。

我的服务器仅用于“UI测试”,并且对于许多应用程序de WatiN测试运行没有任何问题。

此错误仅发生在一个应用程序中,仅发生在CruiseControl中(与nant一起),但在使用NUnitGUI运行测试时则不会...

我今天早上找到了一个解决方案:我将所有通话new IE();替换为new IE(true) WatiN release note并且不再出现错误。

答案 2 :(得分:3)

另一个解决方法是在IE"中启用保护模式。如描述here

答案 3 :(得分:2)

每当IE.Quit被WatiN IE调用时,IE都会停止响应,然后尝试恢复。以管理员身份运行为我解决了问题。

答案 4 :(得分:2)

Another comment说:

  

尝试以管理员身份运行Visual Studio

实际上NUnit需要以管理员身份运行(至少在Windows 7中),但思路正确。

答案 5 :(得分:0)

我认为选择列表尚未完全加载并准备就绪,这是此问题中描述的同一问题的另一个症状:

Access denied error ( Visual Studio and WatiN )