为Chromium编写托管包装器

时间:2011-12-27 18:03:31

标签: c# javascript webkit c++-cli chromium

今天我一直在互联网上蹦蹦跳跳,在阅读了很多解决方案之后,我决定写一个Chromium包装器将是一个有趣的学习经历;更不用说我目前正在开展的几个项目是值得的。

我知道已经有一些包装器(awesomiumberkelium),更不用说一些基本的教程like this one了,但我正在编写自己的包装器。

我这样做的主要兴趣是,我能够创建和访问由WebKit生成的DOM结构,以便在C#中使用,在html依赖的任何javascript之前和之后都运行。我知道我可以使用HTMLAgilityPackMajestic12进行HTML解析,但我希望在经过试验和测试的引擎之上构建一些快速,高效且可以积极开发的东西在可预见的未来。 WebKit是一个积极开发的布局引擎,嵌入在一些最流行的浏览器中,而V8是一个令人印象深刻的javascript引擎,因此决定使用Chromium。

看到我不关心实际渲染任何内容,而是我想要访问网页的结构,我觉得整体嵌入WebKit可能有点过分。即使在我希望javascript改变DOM的情况下,我仍然无法渲染结果。

总结

我真正想从Chromium获得的是能够创建网页的DOM,以及(可选)使用Chromium令人印象深刻的V8引擎运行所述页面脚本以进一步操纵DOM的能力。我知道这将是一项艰巨的任务,但我很想知道你要说些什么。 简而言之,是否有人与WebKit和V8(可能通过Chromium)合作,谁可以评估这种可行性并借给我他们的专业知识(通过如何处理这个问题的建议)?我知道我可以最终确定了接近这个的适当方式,但我希望加快这个过程。链接或者可能是一个相对简短而又甜蜜的高级别“我就是这样做的”是我正在寻找的(也就是说我不需要任何太过花哨的东西)。

我希望我所要求的不是太过分散。如果你发现它太笼统并且想要关闭这个主题,请不要这样做,请留下评论,我会尽量缩小焦点。正如我刚才所说的那样,自从我感冒以来,我的思绪在今天蹦蹦跳跳。

2 个答案:

答案 0 :(得分:1)

我走的是同一条路。我正在深入研究QtWebKit以及在PhantomJs上完成的实现,这是一个像Selenium一样,在我的测试中就像一个魅力。

当您使用QtWebKit时,作为WebKit的驱动程序,您ll save time for next releases of it, because maintain a WebKit Port it并不那么容易。

答案 1 :(得分:0)

我将Selenium WebdriverChromeDriver一起用于自动脚本,网页和验收测试。 Easy to set upeasy to use

我们的想法是您可以使用此现有界面,但change the path to the Chrome executable with ChromeOptions.BinaryLocation。尝试将其指向WebKit的现有无头构建之一,例如WebKitDriver - 它可能正常工作。

我们的目标可能会有所不同,但我会对自己的无头版本感兴趣。在我的开发机器上进行测试时,它会不那么突兀,而且当测试失败时我已经采用了自动截图。