我的问题是我无法通过简单的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(去那里,那样做),但我可能不得不这样做。
答案 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,如果您使用最少权限(应该是),这不应该是安全问题。