日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

浏览器自动化的一些体会8 访问angular页面的一个问题

發布時間:2025/3/20 HTML 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 浏览器自动化的一些体会8 访问angular页面的一个问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

發現瀏覽器自動化有一個重要方面沒有提及,即所謂的無頁面瀏覽器,不過最近沒有需求,不想嘗試,先記上一筆,以后有需求時,可以有個思路。

大約一兩個月前(現在比較懶散,時間不知不覺過去,連今天是幾號有時候都搞糊涂),碰到一個問題,本來程序中用WebBrowser控件訪問一個頁面,現在那個頁面用Angular重寫了,訪問出錯,出來一個空白頁面。

1。解決方案一是改注冊表,修改webBrowser控件所模擬的IE版本,缺省是7,不支持Angular,改成高版本,如11,就可以了。

但是有個問題,只能在第一次創建webBrowser時生效,如果要改回來,對不起,只能重啟程序。應用中有多處用了webBrowser控件,如果這里改成11,別處也要用11,那么,就需要測試所有用到的地方,看頁面的顯示是否正常,測試工作量太大,不可行。

2。解決方案二是用別的控件。找到一個口碑似乎不錯的CefSharp,測試了一下,工作正常。

但是問題來了,首先是工程設置成AnyCPU,CefSharp需要配置。調試了一段時間,也可以了。

更大的問題來了,工程需要用click once方式部署,結果,那些dll發布不出去。查了半天,調試了半天,想盡了辦法,還是不行。最后唯一的辦法似乎只有用Mage.exe和MageUI.exe這兩個windows sdk里的工具,手工修改clickonce的manifest,把需要的dll打包進去。太煩,也不可行。

3。情急之下想出第三方案,用一個獨立的包含webBrowser控件的exe顯示頁面,然后在另一個winform主程序中,把這個exe內嵌到form上的一個panel控件里:

var handle = Process.GetProcessesByName("foo")[0].MainWindowHandle;
SetParent(handle, this.Handle);
SetWindowLong(handle, (int)GWL_STYLE, (uint)WS_VISIBLE);
MoveWindow(handle, 0, 0, this.Width, this.Height, true);

foo就是那個exe,用了一些windows api,P/Invoke的簽名不難從網上找到。

試了下,似乎可行。顯然,很野蠻很丑陋。

4。最后有頭腦靈活的高人想出巧妙的解決辦法:

using (FileStream fs = File.Create(path))

??????????????????????? {

??????????????????????????? using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))

??????????????????????????? {

??????????????????????????????? sw.WriteLine("<html>");

??????????????????????????????? sw.WriteLine("<head>");

??????????????????????????????? sw.WriteLine("<meta http-equiv='X-UA-Compatible' content='IE=edge' />");

??????????????????????????????? sw.WriteLine("<iframe style='width:1500px;height:900px;' src='" + url + "'></iframe>");

??????????????????????????????? sw.WriteLine("</head>");

??????????????????????????????? sw.WriteLine("</html> ");

??????????????????????????? }

??????????????????????? }

??? ????????????????}

??????????????????? webBrowser1.Navigate(path);

手工創建一個頁面,關鍵是<meta http-equiv='X-UA-Compatible' content='IE=edge' />這一句,然后用iframe放那個Angular的頁面,用webBrower控件訪問文件,就可以了。確實是高招,自愧不如。

轉載于:https://www.cnblogs.com/badnumber/p/11087619.html

總結

以上是生活随笔為你收集整理的浏览器自动化的一些体会8 访问angular页面的一个问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。