三个基于.net的浏览器内核使用的比较
最近做模擬登陸發帖相關的項目
分別嘗試了基于IE .NET自帶的 webbrowser 和 基于WebKit 的WebKit.NET和openWebkitSharp
最開始肯定是用的.NET自帶的webbrowser
但是在一個模擬點擊的問題上遇到了錯誤,就是InvokeMerber("click")這個事件沒有生效
網上也有和我差不多類似的錯誤,但是找了一下 沒看到有用的解決辦法
而且其執行js的辦法只有(當然,這個只是目前的發現,后來發現有解決辦法)invokeScript(methodName, args),通過在Document中注入js的辦法也可以
實現一定自由的執行js,但總覺得不是很好
?
于是轉戰WebKit.NET
用Chrome調試過網頁的人一定很喜歡他的Console,雖然IE也支持,但總覺得用的沒Chrome用的爽,但IE11改變了很多
WebKit對他最大的好感就是可以自由的執行javascript,雖然他的setAttribute這個功能穩定性很糟糕,也沒有webbrowser的getElementsByTagName這個功能,
?
而且webbrowser提供的RaiseEvent,innerHtml,innerText他好像也不支持
但只要能執行"自由的"js,很多難以解決的問題都不是問題了
其webKitBrowser1.StringByEvaluatingJavaScriptFromString(String js)這個功能,幾乎可以讓你在C#項目中執行js像在控制臺下自由簡單
所以webbrowser中模擬點擊的問題再 WebKit.NET中用 "document.getElementById('id').click()"解決了
高興之余還罵了下webbrowser,可是沒多久問題就來了,點擊是可以解決,可是當目標服務器傳回js時,他無法進行解析并轉入新的頁面
也就是他點擊的時間完成了,就永遠停在哪里了。。。
后來進一步深入,發現如果用它點擊一個需要在新窗口打開的連接 會毫無反應,而用CreateWindow和RequestWindow事件去獲取,又好像獲取不到目標頁面的url
于是嘗試這個項目提供的DEMO程序,可以多標簽打開頁面,但很多時候程序會莫名其妙的關閉
正在這個時候看到一個人說 推薦用openWebkitSharp,是對WebKit.NET的封裝
?
于是就嘗試了這個控件 托管在谷歌代碼上面的
下載了一個最新版本
雖然其提供的DEMO程序在我的機器上運行總是出錯 (本機環境: WIN7 64 .NET FRAMEWORK 4.5)
其源代碼也是難以在我的vs2010上運行
于是就直接使用它的控件進行編制,第一感覺就是還不錯,提供一個瀏覽器空間還提供了幾個其他控件
而且WebKit.NET不支持的幾個GetElement...相關方法他都支持,甚至在支持"自由的"執行js的同時還提供js,css管理器進行更多的操作
直接進行自己需要的代碼進行測試,點擊可以了,頁面跳轉也能完成
但其顯示的字體效果和之前兩個內核渲染出的都不同,怪怪的
同樣也發現打不開新建窗口的連接,于是退出看看,在退出的時候彈出一個COM VCR之類的錯誤,google之后也沒多少解決辦法
就這一個錯誤對他的好感降了很多,畢竟開發的項目如果給用戶使用出現這種情況是很麻煩的
就在想辦法的時候,vs2010也奔潰了,用了大概3個月的vs2010,對其感覺就是還很穩定,很少崩潰,于是再次打開這個項目運行程序,每次關閉的時候vs都會奔潰
突然感覺到這個控件也不是那么可靠
既然DEMO不能用,就Google一下別人怎么用的
但資料及其的少,中文資料幾乎不超過10個
貌似是在StackOverFlow上面看到有人對這幾個基于.NET瀏覽器內核的評價,其中提到WebKit.NET和openwebkitsharp及其不穩定
而且WebKit.NET早就沒更新了,而openwebkit也是大概1年以前的版本的
很多人都建議用webbrowser,于是決定最后用webbrowser試一試
突然想到之前無法點擊是不是DocumentComplete這個事件不穩定
于是仔細跟蹤之后發現,果然是這個問題,webbrowser在處理DocumentComplete這個事件上確實沒webkit內核做的好
于是稍加處理之后點擊事件完成了,值得一提的是webbrowser的SetAttribute功能很穩定,幾乎自動填表功能都可以
而WebKit下對于填不了的我都是用js解決的
同時也看到了SHDocVw這個控件,原來他是webBrowser的底層,而且利于他可以完成在Webbrowser中"自由的"執行js的問題
關于這個控件的更深層應用還在探究中
?
而在經過兩天的使用三個控件的經歷后得出
如果只想穩定的讓程序帶瀏覽器功能 還是選擇 webbrowser
而想做webkit的開發,則需要自己花很多功夫去探究
畢竟基于webkit的文獻相當少
當然,,,一切都是初學者的言論,大牛就另當別論
?
轉載于:https://www.cnblogs.com/soundcode/p/10884201.html
總結
以上是生活随笔為你收集整理的三个基于.net的浏览器内核使用的比较的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 项目评审
- 下一篇: Pyserial 实现串口 base o