Visual studio 2010 华庭元';无法使用MSpec-未经授权的访问异常
我试图让WatiN在VS2010中使用TestDriven.Net与MSpec合作。我的代码如下:Visual studio 2010 华庭元';无法使用MSpec-未经授权的访问异常,visual-studio-2010,c#-4.0,watin,testdriven.net,mspec,Visual Studio 2010,C# 4.0,Watin,Testdriven.net,Mspec,我试图让WatiN在VS2010中使用TestDriven.Net与MSpec合作。我的代码如下: [Subject("Whatever")] public class when_on_home_page { private static IE browser; Establish context = () => browser = new IE(); Because of = () => { browser.GoTo("
[Subject("Whatever")]
public class when_on_home_page {
private static IE browser;
Establish context = () =>
browser = new IE();
Because of = () => {
browser.GoTo("http://localhost:1234/");
browser.WaitForComplete();
};
It should_show_add_details_link = () =>
browser.Link(Find.ByValue("Add Details")).Exists.ShouldBeTrue();
}
当我运行此操作时,浏览器会加载页面,但当它检查链接时,我会得到:
无论什么,只要在主页上»应显示添加详细信息链接(失败) 测试“应显示添加详细信息链接”失败: System.UnauthorizedAccessException:访问被拒绝。(HRESULT异常:0x80070005(E_访问被拒绝)) 位于mshtml.IHTMLElementCollection.tags(对象标记名) 位于WatiN.Core.Native.InternetExplorer.IEElementCollection.GetElementsByTag(字符串标记名) 位于WatiN.Core.NativeElementFinder.FindElementsByTag(字符串标记名) 在WatiN.Core.NativeElementFinder.d_u2.MoveNext()中 在WatiN.Core.ElementFinder.FindFirst()中 在WatiN.Core.Element.FindNativeElementInternal()中 在WatiN.Core.Element.get_Exists()中 NavigationSpec.cs(20,0):在RobowB.Specs.when_上的主页.b__2() at Machine.Specifications.Model.Specification.InvokeSpecificationField() at Machine.Specifications.Model.Specification.Verify() 环顾四周后,我检查了以下内容:
- VS正在以管理员身份运行
- 显然,TestDriven.Net以STA模式运行一切
- IE已关闭“保护模式”
- 我无法将该站点添加到受信任的站点,可能是因为它在本地运行
- 我调用WaitForComplete(),并尝试了Thread.Sleep()
- 在命令行上(请参阅repo中的
,在运行cmd之前,请编译specs项目并从VS运行web应用程序)WebSpecs Watin.cmd
- 与TD.Net跑步者一起
- 用重弹器
你能试着用上面链接的项目重现错误吗?如果您没有安装Git,则顶部会有一个下载按钮。System.UnauthorizedAccessException可能在多种情况下发生。如果页面未完全加载,而您试图访问某个对象,并且根本不是正确的用户。首先,我将手动调试脚本,并以管理员身份运行测试运行程序
如果这样做有效,那么尝试管理和全速、非管理和全速以及管理和调试的组合。那么你应该知道真正的问题是什么。在一些罕见的情况下(对于WatiN的早期版本),我必须在try-catch中包装调用,然后处理此异常,然后在短暂的等待后重试。谢谢,但没有乐趣:调试在WatiN.Core.dll的IEElementCollection.cs中的这一行给出了相同的错误:'(IHTMLElementCollection)elementCollection.tags(tagName)'。捕捉、等待、重试都会得到相同的结果。命令行可以工作,但奇怪的是,Td.Net不能在页面中找到元素。我在我的电脑上试用了命令行运行程序,效果很好,所以我想是我的Td.Net运行程序出了问题。我有最新版本,并尝试在packages\(mspec)\tools中运行“InstallTDNetRunner”批处理文件,但没有乐趣。至少我现在知道问题在哪里,所以我可以进一步调查。谢谢如果您使用的是TD.Net>=2.24,则无需安装TD.Net runner。只要确保MSpec.tdnet、MSpec.TDNetRunner.dll和MSpec.dll文件在同一个文件夹中就行了。是的,我意识到了——我在v3上,但这两种方式都没有区别。一切都在正确的文件夹中(我的是从NuGet安装的,你的是正确的),但我仍然得到相同的结果。它确实运行MSpec测试,似乎是WatiN方面存在问题。现在我将从命令行运行它。谢谢你的帮助