XDS*_*XDS 6 javascript security watin denied
我为WatiN(版本2.1)设置了一个简单的测试平台,其中包括:
var browser = new IE();
browser.GoTo("http://www.google.co.il"); // webpage doesn't matter really
browser.RunScript("alert(123)");
Run Code Online (Sandbox Code Playgroud)
仅当未安装KB3025390时,此方法才有效.安装它会破坏上面的测试,其中包含HRESULT设置为E_ACCESSDENIED的UnAuthorizedAccessException.是什么赋予了?有没有解决方法?
更新:使用IWebBrowser2.Navigate2和"javascript:console.log(123)"类型的脚本工作但是
更新#2:selenium项目的人们也注意到了这个问题:
https://code.google.com/p/selenium/issues/detail?id=8302
还创建了一个错误报告:
更新#3:IHTMLWindow2.setInterval和IHTMLWindow2.setTimeout也会抛出UnauthorizedAccess异常.这些方法未标记为已弃用:
http://msdn.microsoft.com/ko-kr/library/windows/desktop/aa741505%28v=vs.85%29.aspx
然而,他们受伤同样的减产同样受伤.
更新#4:我在这篇文章中给出了推荐的方法:
为了动态调用IHTMLWindow2对象的"eval"方法(或任何其他方法).得到与上面相同的"System.UnauthorizedAccessException".所以也没有喜悦.
Microsoft建议使用"eval"而不是"execscript",但在上述实验之后,我怀疑他们只是在浏览器中引用"eval".
据我所知,到目前为止,当涉及到成熟的IE11 +使用"eval"进程外(通过COM)似乎已被完全禁止以及窗口对象的任何其他函数调用,唯一的例外是上面提到的.Navigate2()的反向通道.
事实证明,微软最终改变了在 COM 级别取消 .execScript 的决定。只需安装 Windows 的最新更新,包括 kb3025390:kb3025390 之后发布的 IE 更新之一在 COM 级别恢复了 .execScript 功能
但请注意,.execScript 无法再通过 IE 的 javascript 访问。在这种情况下,它就永远消失了。