C#中CefSharp的简单使用
程序员文章站
2022-07-11 11:54:20
...
准备工作
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<FrameLoadEndEventArgs>(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代码
<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>
测试功能:
调用页面中的testfunc函数
C# 代码
private void button3_Click(object sender, EventArgs e)
{
WebBrowser.FrameLoadEnd += new EventHandler<FrameLoadEndEventArgs>(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
上一篇: matlab画图
下一篇: 关于MATLAB,fitcsvm的画图