三个基于.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

时间: 2024-10-13 14:13:41

三个基于.net的浏览器内核使用的比较的相关文章

基于浏览器内核的被动式爬虫任务下发框架

基于浏览器内核的被动式爬虫任务下发框架 现有基于浏览器的客户端测试框架通过ChromeDriver这类组件来主动控制,但主动控制有缺点: 重新load下一个页面时,上一个页面可能仍有JS代码在执行,或者网络层的连接阻塞.UI线程阻塞什么的: 通过WebView接口注入执行的JS代码可能因为各种情况意外出错,出错的话无法获得通知 无法可靠地向浏览器查询,获得当前任务是否已经执行完成的信息 这里给出一个简单的基于修改chromium内核,进行被动控制的思路及流程如下: 浏览器启动时,通过一个'给定的

各主流浏览器内核介绍

所谓的"浏览器内核"无非指的是一个浏览器最核心的部分--"Rendering Engine",直译这个词汇叫做"渲染引擎",不过我们也常称其为"排版引擎"."解释引擎".这个引擎的作用是帮助浏览器来渲染网页的内容,将页面内容和排版代码转换为用户所见的视图. 注:有时候我们所说的"浏览器内核"甚至"渲染引擎",其实除了渲染引擎,也悄悄包含了javascript引擎,如W

浏览器内核及渲染模式的介绍

首先要引入一个概念——排版引擎(Layout Engine,Rendering Engine),就是经常上网的人也许都听说过的浏览器内核,负责解析网页语法(如HTML.JavaScript)并渲染.展示网页.各品牌浏览器的内核是不同的,不同的内核处理同一段代码的时候思路不同.因此可以说,浏览器间内核的差异是产生兼容性问题的根本原因.这就是我们苦逼前端工程师们经常希望浏览器大一统的原因了.当然这只是个梦,那好我们回归现实,下面我将对四种常用的浏览器内核进行简单的介绍.  Trident      

浏览器内核分类

浏览器的种类成千上百,但所基于的内核,却没有几个.眼下主流的浏览器内核主要为下面四种: 一.Trident内核,代表产品Internet Explorer 说起Trident,非常多人都会感到陌生,但提起IE(Internet Explorer)则无人不知无人不晓,因为其被包括在全世界使用率最高的操作系统Windows中,得到了极高的市场占有率,所以我们又常常称其为IE内核. Trident(又称为MSHTML),是微软开发的一种排版引擎.它在1997年10月与IE4一起诞生,至今经历12年,至

常见浏览器内核概述

一. 浏览器内核[Rendering Engin] (排版引擎/渲染引擎/解释引擎) 概述what? 负责对网页语法的解释并渲染网页,将网页的代码转换为终于可见的页面形式,而且决定浏览器怎样显示网页的内容以及页面的格式信息. 不同浏览器内核对网页编写语法的解释也有不同,故同一网页在不同内核浏览器中渲染效果也不尽同样,这就须要网页编写者在不同内核浏览器中測试网页显示的效果. 为什么会排版错位呢? 因为浏览器内核负责渲染网页内容的,进行排版.因此必定会出现排版错位等问题. 造成此现象的原因有:站点本

<转>浏览器内核分类

浏览器的种类成千上百,但所基于的内核,却没有几个.目前主流的浏览器内核主要为以下四种: 一.Trident内核,代表产品Internet Explorer说起Trident,很多人都会感到陌生,但提起IE(Internet Explorer)则无人不知无人不晓,由于其被包含在全世界使用率最高的操作系统Windows中,得到了极高的市场占有率,所以我们又经常称其为IE内核. Trident(又称为MSHTML),是微软开发的一种排版引擎.它在1997年10月与IE4一起诞生,至今经历12年,至少更

浏览器内核、排版引擎、js引擎

[定义] 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”.负责对网页语法的解释(如标准通用标记语 言下的一个应用HTML.JavaScript)并渲染(显示)网页. 所以,通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及 页面的格式信息.不同的浏览器内核对网页编写语法的解释也有不同,因此同一网页在不同的内核的浏览器里的渲染(显示)效果也可能不同,这也是网页编写者需要在不

不同浏览器内核

在写前端的时候,了解了一些浏览器兼容的问题,印象最深的还是圆角和渐变(感谢千年弦歌). 浏览器最重要或者说核心的部分是“Rendering Engine”,我们一般称之为“浏览器内核”.  它负责对网页语法的解释(如HTML.JavaScript)并渲染(显示)网页. 相同的代码在不同的浏览器呈现出来的效果不一样,那么就很有可能是不同的浏览器内核导致的. 那么问题来了 —— 一.整理一下主流浏览器的内核: Trident(windows)——IE 其他:世界之窗,360安全浏览器, 遨游2.0(

浏览器内核Trident/Gecko/WebKit/Presto

原文网址链接http://tools.yesky.com/19/34456519.shtml "浏览器内核"主要指渲染引擎(Rendering Engine),负责解析网页语法(如HTML.JavaScript)并渲染.展示网页.因此,所谓的浏览器内核通常也就是指浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息.不同的浏览器内核对网页编写语法的解析也有所不同,因此同一网页在不同的内核浏览器里的渲染.展示效果也可能不同. 浏览器内核种类繁多,商用的加上非商