最近作模擬登錄發帖相關的項目javascript
分別嘗試了基於IE .NET自帶的 webbrowser 和 基於WebKit 的WebKit.NET和openWebkitSharpcss
最開始確定是用的.NET自帶的webbrowserjava
可是在一個模擬點擊的問題上遇到了錯誤,就是InvokeMerber("click")這個事件沒有生效web
網上也有和我差很少相似的錯誤,可是找了一下 沒看到有用的解決辦法瀏覽器
並且其執行js的辦法只有(固然,這個只是目前的發現,後來發現有解決辦法)invokeScript(methodName, args),經過在Document中注入js的辦法也能夠服務器
實現必定自由的執行js,但總以爲不是很好測試
因而轉戰WebKit.NET字體
用Chrome調試過網頁的人必定很喜歡他的Console,雖然IE也支持,但總以爲用的沒Chrome用的爽,但IE11改變了不少google
WebKit對他最大的好感就是能夠自由的執行javascript,雖然他的setAttribute這個功能穩定性很糟糕,也沒有webbrowser的getElementsByTagName這個功能,lua
並且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的文獻至關少
固然,,,一切都是初學者的言論,大牛就另當別論