当我在构建服务器上运行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();
}
}
}
任何想法可能是什么?
/乔金姆
答案 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)
答案 5 :(得分:0)
我认为选择列表尚未完全加载并准备就绪,这是此问题中描述的同一问题的另一个症状: