最近作模拟登录发帖相关的项目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的文献至关少
固然,,,一切都是初学者的言论,大牛就另当别论