我編寫了一個非常小的網站bot在C#中使用默認的WebBrowser控件。事實上,幾乎所有事情都按照它應該工作的方式工作,但我似乎在自動化的最後一步遇到問題。WebBrowserControl:UnauthorizedAccessException當訪問幀的屬性
該網站是使用多個iframe構建的。這是沒有太大的一個大問題,因爲我只是用
webBrowser1.Document.Window.Frames[0].Document.GetElementById("element").InvokeMember("click");
然而,這當IFRAME的來源正在於比實際的網站不同的域名託管不起作用訪問這些框架和它們的元素。當我搜索互聯網尋找問題的答案時,我偶然發現了一篇MSDN文章中提到的這個特定問題,他們指的是針對跨站點腳本的安全措施,這可能是導致此錯誤的原因。
我真的找不到一種禁用此功能的方式,所以我繼續前進並決定重新編碼一切,以使用geckofx-12而不是默認(基於IE)的Web瀏覽器控件,但我遇到了類似的問題。 ..
我的問題是:有什麼辦法可以繞過這種煩人的行爲?我並不關心安全問題,也不在乎是否正在使用geckofx或默認的Web瀏覽器控件,我只想以編程方式訪問正在託管在不同域上的站點的元素,而無需運行到UnauthorizedAccessException 。
我很想得到那裏的專家的建議。
不幸的是,當嘗試使用這種方法時,我得到了一個COM異常。然而,我通過獲取帶有webBrowser1.Document.GetElementsByTagName(「iframe」)的iframe並通過((Gecko.DOM.GeckoIFrameElement)frames [0])訪問其內容文檔來完成工作。ContentDocument完美地工作。不過,我將答案標記爲解決方案,因爲無論如何都沒有其他答案。 – beta