我的问题是我无法通过简单的WatiN测试来可靠地运行我的运行Windows Server 2008和IE8的开发机器.
我已经看到了几个好帖子,但我仍然遇到问题.以下是帖子:
MSDN测试文章
堆栈溢出 - WatiN第二种方法失败
第一篇文章中的步骤似乎有帮助(在我的hosts文件中注释掉":: 1",将我的站点放在可信站点中,并确保我的app.config有"STA"并设置为"copy if"更新",但他们没有帮助可靠.我尝试了第二个例子中的代码,希望它会有所帮助,但事实并非如此.我使用的是WatiN 2.0版beta 1.
我的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(去那里,那样做),但我可能不得不这样做.
以管理员身份运行Visual Studio
我能够让这个COM错误消失 - 让我的测试正常运行 - 通过将我的Internet安全设置调整为"启用保护模式",即使对于本地Intranet站点也是如此.这个单一的复选框完全不同.(而且我不必以管理员身份运行Visual Studio.)
请参阅此博客文章以解决此问题,而无需以管理员身份运行Visual Studio.
简述:
在Internet Explorer中,打开"工具" - >"Internet选项" - >"安全性" - >"本地Intranet",然后选中"启用保护模式"框.
我在Windows 7上运行IE 8和Visual Studio 2010.