我已經建立了一個簡單的測試平臺華廷(版本2.1)後的工作內容是:Browser.ExecScript()停止更新窗口
var browser = new IE();
browser.GoTo("http://www.google.co.il"); // webpage doesn't matter really
browser.RunScript("alert(123)");
如果沒有安裝KB3025390這僅適用。安裝它將使用HRESULT設置爲E_ACCESSDENIED的UnAuthorizedAccessException來打破上述測試。是什麼賦予了?有什麼解決方法嗎?
更新:使用IWebBrowser2.Navigate2伴隨着「的javascript:執行console.log(123)」腳本類型的作品不過
- 這讓我使用這樣的反向通道
- 腳本貫穿感到不安.Navigate2()的這個反向通道的最大長度可能只有2070個字符(給出或取),否則它們會被強制截斷到這個長度,導致嘗試運行它們時發生javascript錯誤
- using .Navigate2() ,即使是最瑣碎的腳本,會阻塞Internet Explorer的就緒狀態,因爲它將被設置爲READYSTATE_LOADING,而沒有任何希望擺脫它。。簡而言之,這意味着一旦你使用這個黑客,你必須以「不等待網頁加載」的方式(GoToNoWait,ClickNoWait等)執行WatiN中的每一個後續操作,以免代碼凍結等待瀏覽器回到READYSTATE_COMPLETE(這將永遠不會像前面提到的那樣)。
- 似乎有一個更廣泛的問題,因爲我甚至無法訪問IHtmlWindow2對象p.e的屬性。 window.document再次拋出一個未經授權的異常,使得它幾乎不可能將我正在運行的腳本(使用Expando等)的腳本的返回值傳遞給C#世界,而不是window.top.document(對於window.top .document窗口有IWebBrowser2.Document其中的伎倆)
更新#2:鄉親在硒項目也已經注意到了這個問題:
https://code.google.com/p/selenium/issues/detail?id=8302
的bug報告已經也創建了:
更新#3:IHTMLWindow2.setInterval和IHTMLWindow2.setTimeout還會引發UnauthorizedAccess異常。都沒有標明這些方法在棄用:
http://msdn.microsoft.com/ko-kr/library/windows/desktop/aa741505%28v=vs.85%29.aspx
但他們都受傷了從同一削減都是一樣的痛苦。
更新#4:我給在這個崗位推薦了一槍方法:
https://stackoverflow.com/a/18546866/863651
爲了動態調用IHTMLWindow2對象的「EVAL」的方法(或任何其他方法真的)。與上述相同的「System.UnauthorizedAccessException」。在這裏也沒有喜悅。
微軟建議在「execscript」上使用「eval」,但是在上述實驗之後,我懷疑他們只是從瀏覽器內訪問「eval」。據我所知,當使用「eval」進程(通過COM)的完整IE11 +似乎已被完全禁止以及任何其他函數調用窗口對象,唯一的例外是上面提到的.Navigate2()的返回通道。
'browser.Eval(「alert(123)」);'? –
我也想知道如果'browser.GoTo(「javascript:alert(123)」)'也可以。也許它有什麼警報如何被調用? –
.Eval()失敗,具有相同的HRESULT。 .GoTo()方法似乎至少在平凡的測試上起作用。在另一個說明中:我在互聯網區域擺弄IE的安全設置,沒有任何東西出來。感謝您查看這個。 – xDisruptor