最近想用c#做个简单的浏览器工具,但是网站一些内容不支持c#内置的WebBowser控件,于是只能改用其他内核浏览器进行开发,搜索到WebKit.NET这个封装好的浏览器引擎,需求的功能也都有,于是用WebKit.NET进行开发。

WebKit.NET官网 http://webkitdotnet.sourceforge.net/

WebKit.NETgithub https://github.com/webkitdotnet/webkitdotnet/tree/develop/WebKitBrowser

直接下载0.5版本的windows bin文件地址为:https://sourceforge.net/projects/webkitdotnet/files/WebKit%20.NET%200.x/0.5/WebKit.NET-0.5-bin-cairo.zip/download

项目使用WebKit.NET

一:把下载解压好的WebKit.NET-0.5-bin-cairo\bin目录文件复制到项目\bin\Debug下面

二:添加引用”WebKitBrowser.dll“

三:引用之后在“工具箱-常规”里面应该有”WebKitBrowser“

四:项目使用

可以手动写代码添加”WebKitBrowser“也可以在工具箱拖控件进去

代码示例

WebKitBrowser browser = new WebKitBrowser();
                browser.Dock = DockStyle.Fill;//充满窗口
                this.Controls.Add(browser);//添加至窗体 或 容器

WebKitBrowser的使用

一:WebKitBrowser打开指定连接

browser.Navigate(url);

二:WebKitBrowser弹出连接的获取

WebKitBrowser弹出新链接是直接在系统默认浏览器打开的,我们需要进行修改获取WebKitBrowser弹出的新链接地址,再进行操作

this.browser.NewWindowCreated += new WebKit.NewWindowCreatedEventHandler(this.browser_NewWindowCreated);
                private void browser_NewWindowCreated(object sender, NewWindowCreatedEventArgs e)
                {
                        e.WebKitBrowser.Navigating += new WebBrowserNavigatingEventHandler(WebKitBrowser_Navigating);
                        e.WebKitBrowser.Location = new Point(2000, 2000);
                        this.Controls.Add(e.WebKitBrowser);
                }
                void WebKitBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
                {
                        //WebKitBrowser弹出的新链接地址
                        string url = e.Url.ToString();
                }

如果是拖控件操作的,在WebKitBrowser控件”属性-事件“双击NewWindowCreated后进行编辑即可

private void browser_NewWindowCreated(object sender, NewWindowCreatedEventArgs e)
                {
                        e.WebKitBrowser.Navigating += new WebBrowserNavigatingEventHandler(WebKitBrowser_Navigating);
                        e.WebKitBrowser.Location = new Point(2000, 2000);
                        this.Controls.Add(e.WebKitBrowser);
                }
                void WebKitBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
                {
                        //WebKitBrowser弹出的新链接地址
                        string url = e.Url.ToString();
                }

三:WebKitBrowser执行js

string strScript = "function GetSpanContent(){return document.getElementById('span').innerText;}GetSpanContent();";
                string result = browser.StringByEvaluatingJavaScriptFromString(strScript);

具体操作过程中,发现有些js在chrome可以执行,在WebKitBrowser执行会报错,比如document.getElementById('span').innerHTML需写成document.getElementById('span').innerText没有查到资料,可能是有些语句不支持,如果执行语句出错可以换种写法试试。

另外要注意的是,试了一下,页面后期添加的元素,是取不到的,有解决方法可以留言讨论下

四:WebKitBrowser页面代码

WebKitBrowser页面代码属性是browser.DocumentText。有时候不用执行js直接用这个属性去获取判断一些东西也是可以的。

WebKitBrowser的使用例子

private void btnLogin_Click(object sender, EventArgs e)
        {
                Log("开始登录操作");
                try
                {
                        if (browser != null)
                        {
                                string strScript = "document.getElementById('txtUserName').value='" + txtUser.Text.Trim() + "';document.getElementById('txtPassword').value='" + txtPassword.Text.Trim() + "';document.getElementById('btnLogin').click();";
                                browser.StringByEvaluatingJavaScriptFromString(strScript);
                                Log("登录操作完成!");
                        }
                }
                catch (Exception ex)
                {
                        Log("登录失败!");
                }
        }

上面代码是演示了下怎么进行自动登录操作,具体需求可通过js完成的WebKit.NET应该都是能完成的。

本篇文章到此结束。

WebKit.NET-0.5简单应用的更多相关文章

  1. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理

    这是本人第一次写,写的不好的地方还忘包含.写这个的主要原因是想通过这个来学习下EF的CodeFirst模式,本来也想用AngularJs来玩玩的,但是自己只会普通的绑定,对指令这些不是很熟悉,所以就基 ...

  2. 云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    云优化的概念.Entity Framework 7.0.简单吞吐量压力测试 继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之 ...

  3. Android 6.0 超级简单的权限申请2 (Permission)

    代码地址如下:http://www.demodashi.com/demo/13506.html 写在前面 上次写了一个权限申请的例子Android 6.0 超级简单的权限申请 (Permission) ...

  4. Android 6.0 超级简单的权限申请 (Permission)

    代码地址如下:http://www.demodashi.com/demo/13369.html 背景描述 随着Android系统的不断升级,谷歌对用户的隐私是越来越注重了,给我们开发者带来了更多的繁琐 ...

  5. 用Vue2.0实现简单的分页及跳转

    用Vue2.0实现简单的分页及跳转 2018年07月26日 20:29:51 Freya_yyy 阅读数 3369    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog ...

  6. 用pytorch1.0搭建简单的神经网络:进行多分类分析

    用pytorch1.0搭建简单的神经网络:进行多分类分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib ...

  7. percona-toolkit 3.0.13 简单安装记录

    percona-toolkit 3.0.13 简单安装记录 环境:centos6.x mysql:8.0.17 yum -y install perl-DBIyum -y install perl-D ...

  8. percona-xtrabackup-8.0.7简单快捷使用

    percona-xtrabackup-8.0.7简单快捷使用 # 参考资料: https://blog.csdn.net/vkingnew/article/details/83012316 # 环境: ...

  9. 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...

  10. Asp.Net MVC+BootStrap+EF6.0实现简单的用户角色权限管理1

    首先给上项目的整体框架图:,这里我没有使用BLL,因为感觉太烦了就没有去使用. 那么接下来我们首先先去Model层中添加Model. 管理员类: using System; using System. ...

随机推荐

  1. dp入门—数塔

    在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?  已经告诉你了,这是个DP的题 ...

  2. ios兼容 input输入时弹出键盘框 页面整体上移键盘框消失后在ios上页面不能回弹的问题

    前端h5混合开发手机端ios  当有input输入时,手机下方弹出键盘使页面上移,当输入完成,键盘消失后页面显示回到原位,但实际不能点击(可点击上方区域,有反应),也就是说实际是没有回弹. 解决办法: ...

  3. BZOJ 1717 [USACO06DEC] Milk Patterns (后缀数组+二分)

    题目大意:求可重叠的相同子串数量至少是K的子串最长长度 洛谷传送门 依然是后缀数组+二分,先用后缀数组处理出height 每次二分出一个长度x,然后去验证,在排序的后缀串集合里,有没有连续数量多于K个 ...

  4. JS数据分组[JSON]

    JS 数据分组 var arr = [{ "id": "1001", "name": "值1", "value ...

  5. STM32 GPIO重映射(转)

    重映射就是将引脚功能重新定义到其他引脚, 例如PA9是USART1-TX默认的 管脚,但是现在PA9用做它用了,那可以将USART1-TX重新映射到PB6,当然这 种映射不是随意的想映射到哪个脚就哪个 ...

  6. JQuery封装ajax的方法

    1.$.post方法 $.post(url[,data][,callback][,type]) url:请求的后台程序地址 data:发送到后台的数据 callback:载入成功时回调函数,该函数参数 ...

  7. SpringBoot中使用过滤器Filter

    场景:API的参数都是经过加密的,于是在过滤器中,将获取到的请求的参数先解密再去进行处理 一.实现Filter接口 public class TestFilter implements Filter ...

  8. Css学习总结(2)——60个有用CSS代码片段

    1.垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,可以很优雅的解决这个困惑: .verticalcenter{ position: re ...

  9. Spring IOC过程

    https://www.processon.com/diagraming/5c96171fe4b0f88919b98497 1. AbstractApplicationContext:执行refres ...

  10. Eclipse删除多余工作空间

    选择perferences-->General -->Startup and Shutdown-->workspace-->选择多余的工作空间 -> remove -&g ...