我正在尝试使用TestDriven.Net让WatiN在VS2010中使用MSpec。我的代码如下:
[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();
}
当我运行它时,浏览器加载页面,但是当它检查链接时,我得到:
无论如何,何时在主页上 »应显示添加详细信息链接(FAIL)
测试'应该显示添加详细信息链接'失败: System.UnauthorizedAccessException:拒绝访问。 (HRESULT异常:0x80070005(E_ACCESSDENIED)) 在mshtml.IHTMLElementCollection.tags(Object tagName) 在WatiN.Core.Native.InternetExplorer.IEElementCollection.GetElementsByTag(String tagName) 在WatiN.Core.NativeElementFinder.FindElementsByTag(String tagName) 在WatiN.Core.NativeElementFinder.d__2.MoveNext() 在WatiN.Core.ElementFinder.FindFirst() 在WatiN.Core.Element.FindNativeElementInternal() 在WatiN.Core.Element.get_Exists() NavigationSpecs.cs(20,0):在RoboWeb.Specs.when_on_home_page。< .ctor> b__2() 在Machine.Specifications.Model.Specification.InvokeSpecificationField() 在Machine.Specifications.Model.Specification.Verify()
环顾四周,我检查了以下内容:
我也尝试过使用FireFox,但这只是崩溃了。
知道我在这里做错了吗?
答案 0 :(得分:2)
These specifications为我工作。实际上,我这是我的第一个WatiN规范;我在尝试重现您收到的错误时写道。 : - )
我唯一需要做的就是关闭IE的保护模式。我运行了规格
WebSpecs-Watin.cmd
,请在运行cmd之前编译specs项目并从VS运行Web应用程序)他们在所有三个案件中都取得了成功。我不是以管理员身份运行。
您可以尝试使用上面链接的项目重现错误吗?如果您没有安装Git,则顶部有一个下载按钮。
答案 1 :(得分:0)
System.UnauthorizedAccessException可能在许多情况下发生。如果页面未完全加载并且您尝试访问对象,并且只是不是正确的用户。我将首先手动调试脚本,然后以管理员身份运行测试运行器。
如果可行,请尝试使用admin&组合全速,非管理和全速以及管理和调试。然后你应该知道真正的问题是什么。在一些罕见的情况下(使用WatiN的早期早期版本),我必须在try-catch中包装调用然后处理此异常,然后在短暂的等待后重新尝试。