C#中CefSharp的简单使用

准备工作

1. 创建32位winform项目 必须指定32位或64位 这里使用32位 
2. 下载CefSharp相关文件 
3. 复制CefSharp相关文件到项目debug目录并添加引用


1.创建项目

关键步骤是项目必须是32位 
这里写图片描述


2.CefSharp相关文件

可以直接通过NuGet程序包直接导入,本人为了图方便直接将用到的文件打包,新建项目时解压到debug目录就行

压缩包下载链接 密码:5n49

包内文件如下: 
这里写图片描述 
全都复制到Debug目录就行


3.在项目中引用

懒人方法:直接选中目录下所有dll文件添加: 
 
不用管后面的错误提示

引用成功后实际引用的DLL如图: 
这里写图片描述


4.简单页面跳转

  • 先画个界面 
    这里写图片描述

-实现页面跳转功能 
实现方式很简单

引用名空间

using System;
using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

声明变量

ChromiumWebBrowser CWebBrowser;

调用

        private void button1_Click(object sender, EventArgs e)
        {
            CWebBrowser = new ChromiumWebBrowser(textBox1.Text);
            panel1.Controls.Add(CWebBrowser);
        }

 

执行结果: 
这里写图片描述

可以加载很多原生webbrowser不能加载的内容 可以适应iframe

其他相关操作

5.获得页面源代码

代码

       private void button2_Click(object sender, EventArgs e)
        {
            String html =  WebBrowser.GetSourceAsync().Result;
            richTextBox1.Text = html;
        }

 

注意GetSourceAsync方法是异步操作

效果 
这里写图片描述

6.判断页面加载完成

页面加载完成后会触发FrameLoadEnd事件

代码

        private void button1_Click(object sender, EventArgs e)
        {
            WebBrowser = new ChromiumWebBrowser(textBox1.Text);
            panel2.Controls.Add(WebBrowser);
            WebBrowser.FrameLoadEnd += new EventHandler(FrameEndFunc);

        }

        private void FrameEndFunc(object sender, FrameLoadEndEventArgs e)
        {
            MessageBox.Show("加载完毕");
            this.BeginInvoke(new Action(() => {
                String html = WebBrowser.GetSourceAsync().Result;
                richTextBox1.Text = html;
            }));
        }

注意使用WebBrowser.GetSourceAsync().Result会阻塞当前线程

运行效果 
这里写图片描述

6.执行页面中的js函数

测试js代码






测试功能:

调用页面中的testfunc函数

C# 代码

        private void button3_Click(object sender, EventArgs e)
        {
            WebBrowser.FrameLoadEnd += new EventHandler(FrameEndFunc);
            using (StreamReader sr = new StreamReader("cefsharptext.html"))
            {
                string html = sr.ReadToEnd();
                WebBrowser.LoadHtml(html, "http://testpage/");
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            String script = "testfunc(99,1)";
            var result = this.WebBrowser.EvaluateScriptAsync(script).Result.Result;
            MessageBox.Show(result.ToString());
        }

执行效果: 
这里写图片描述

总结

CefSharp是一个功能很强大的浏览器控件,本人从事爬虫相关工作,合理利用cefsharp便捷执行js代码的功能,可以绕过一些前端的加密混淆代码 代码比较简单就不上传了 有需要的朋友可以联系我

 原文:https://blog.csdn.net/qq_26712977/article/details/78282995

你可能感兴趣的:(C#)