你如何让WatiN在Windows Server 2008上使用IE8?

时间:2009-06-18 19:49:50

标签: internet-explorer-8 nunit windows-server-2008 watin

我的问题是我无法通过简单的WatiN测试来可靠地运行运行Windows Server 2008和IE8的开发机器。

我已经看到了几个好帖子,但我仍然遇到问题。以下是帖子:

第一篇文章中的步骤似乎有帮助(在我的hosts文件中注释掉“:: 1”,将我的网站放在可信站点中,并确保我的app.config具有“STA”并设置为“复制如果更新”,但它们没有帮助可靠。我尝试了第二个例子的代码,希望它会有所帮助,但事实并非如此。我使用的是WatiN 2.0版测试版。

我的NUnit代码如下所示:

protected Browser Browser { get; set; }

[TestFixtureSetUp]
public void SetupPriorToTestsInThisFixture()
{
    Browser = new IE();
    Browser.GoTo(Constants.SiteCollectionUrl);
}

[TestFixtureTearDown]
public void TearDownAfterTestsInThisFixture()
{
    if (Browser != null)
    {
        Browser.Dispose();
    }
}

[Test]
public void WaterThroughThePipes()
{
    Link link = Browser.Link(Find.ByText("Calendar"));
    bool exists = link.Exists;
    Assert.That(exists, Is.True, "Could not find 'Calendar' link.");
}

我所看到的是,有时(虽然很少)我的测试通过了。有时断言失败(exists = false),有时我在尝试打开浏览器时会出现超时,有时我在尝试访问link.Exists时出错。

访问link.Exists的错误如下:

  

MyFixture.WaterThroughThePipes:   System.Runtime.InteropServices.COMException:接口未知。 (HRESULT异常:0x800706B5)

我现在似乎无法重现超时错误,因此我暂时无法提供(尽管过去常常会发生这种情况)。

在调试模式下运行时,我倾向于看到不同的结果,而不是在调试模式下运行。

对于它的价值,Firefox 3.0.6从未为我工作过。我喜欢它,但需要IE无论如何工作。这是我在Firefox中遇到的错误。

  

MyFixture(TestFixtureSetUp):   WatiN.Core.Native.Mozilla.FireFoxException:无法连接到jssh服务器,请确保您已正确安装jssh.xpi插件     ----> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:9997

有什么想法吗?我真的不想回到Selenium(去那里,那样做),但我可能不得不这样做。

5 个答案:

答案 0 :(得分:29)

以管理员身份运行Visual Studio

答案 1 :(得分:21)

我能够让这个COM错误消失 - 让我的测试正常运行 - 通过将我的Internet安全设置调整为“启用保护模式”,即使对于本地Intranet站点也是如此。这个单一的复选框完全不同。 (而且我不必以管理员身份运行Visual Studio。)

See this blog post用于修复此问题,而无需以管理员身份运行Visual Studio。

简言之:

在Internet Explorer中,打开工具 - >互联网选项 - >安全 - >本地Intranet并选中“启用保护模式”框。

我在Windows 7上运行IE 8和Visual Studio 2010。

答案 2 :(得分:1)

IE8 definatley与WatiN合作,自IE8首次公开发布以来已经完成。

如果某些内容在调试中有效但在运行时没有,则通常指向时间或Server 2008安全锁定问题。

你应该在try catch中输入失败的行,然后如果有半秒的异常暂停,然后重新尝试。

还要确保已关闭所有额外的服务器安全锁定,并以管理员身份运行nUnit以避免UAC妨碍。

答案 3 :(得分:0)

关于你在firefox上看到的错误......可以通过安装FireWatir FF plugin来解决。 (或者至少在3.5.3上对我有用)

但正如已经提到的,IE支持并且在WatiN环境中,使用FireFox并不是一个神奇的解决方案。

答案 4 :(得分:0)

避免以管理员身份运行Visual Studio或NUnit的另一种方法是在计算机级别禁用UAC,如果您使用最少权限(应该是),这不应该是安全问题。