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;
   
   
   
   
  • 1
  • 2
  • 3
  • 4

声明变量

ChromiumWebBrowser CWebBrowser;
   
   
   
   
  • 1

调用

        private void button1_Click(object sender, EventArgs e)
        {
            CWebBrowser = new ChromiumWebBrowser(textBox1.Text);
            panel1.Controls.Add(CWebBrowser);
        }
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

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

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

其他相关操作

5.获得页面源代码

代码

       private void button2_Click(object sender, EventArgs e)
        {
            String html =  WebBrowser.GetSourceAsync().Result;
            richTextBox1.Text = html;
        }
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5

注意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;
            }));
        }
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

运行效果
这里写图片描述

6.执行页面中的js函数

测试js代码

<html>
<body>
<button type="button" onclick="test(1,2)">测试按钮button>
body>
<script type="text/javascript">
function test(a,b)
{
var c = testfunc(a,b);
    alert(c);
}
function testfunc(a,b)
{
    return a+b;
}
script>
<html>
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

测试功能:

调用页面中的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());
        }
   
   
   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

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

总结

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

你可能感兴趣的:(代码)