WebKit.NET-0.5简单应用

        最近想用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应该都是能完成的。

        本篇文章到此结束。

posted @ 2017-11-27 18:19  蒲公英C  阅读(9615)  评论(2编辑  收藏  举报