我正在使用Watin 2.1.0运行自动IE浏览器测试。它们在我的本地机器上正常工作但是我试图让它们在我的TeamCity构建机器上运行但是当测试在每个测试中的相同特定点运行时我得到这个错误:
System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
完整堆栈跟踪:
at mshtml.HTMLWindow2Class.IHTMLWindow2_execScript(String code, String language)
at WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(String scriptCode, String language, IHTMLWindow2 window)
at WatiN.Core.Native.InternetExplorer.IEUtils.RunScript(String scriptCode, String language, IHTMLWindow2 window)
at WatiN.Core.Native.InternetExplorer.IEElement.GetJavaScriptElementReference()
at WatiN.Core.Native.InternetExplorer.IEFireEventHandler.CreateJavaScriptFireEventCode(NameValueCollection eventObjectProperties, String eventName)
at WatiN.Core.Native.InternetExplorer.IEFireEventHandler.FireEvent(String eventName, NameValueCollection eventProperties, Boolean noWait)
at WatiN.Core.Native.InternetExplorer.IEElement.FireEvent(String eventName, NameValueCollection eventProperties)
at WatiN.Core.Element.FireEvent(String eventName, Boolean waitForComplete, NameValueCollection eventProperties)
at WatiN.Core.Element.FireEvent(String eventName)
at WatiN.Core.Element.Focus()
我不确定这里发生了什么。正在运行测试的用户帐户是管理员,我已在IE设置中设置用作可信站点的站点。我很确定它是TeamCity中的一个设置,因为它们在本地工作而不在TeamCity构建服务器上而错过了。
任何帮助都将不胜感激。
编辑: 我们有三个Team City代理运行多个项目,其中一个作为主机 这是其中一个不是主机的构建代理的“登录”选项卡:
勾选“允许服务与桌面交互”复选框,但Watins仍无效。
在主机上:
然而,Watins也不能在这台机器上工作。 Watins还使用不同的用户帐户将IE作为进程运行。因此构建代理在用户帐户“A”下运行,并且作为watin测试的一部分,IE在用户帐户“B”下运行。
此信息可能与寻找解决方案更相关。谢谢!
答案 0 :(得分:0)
您需要将构建代理服务配置为“允许服务与桌面交互”的可能性很大。
答案 1 :(得分:0)
几个月前的一次MS更新阻止了对运行脚本的访问,因此您获得了原因:
System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
查看此聊天here。这是破坏已运行多年的事情的“修复”之一。您应该找到使用脚本的替代方法(并不总是可行或与运行脚本时一样准确)。