该文为原创文章,转载请注明原文出处
本文章博客地址:
CefSharp 实现拖拉滑动验证Demo_靓仔建的博客-CSDN博客
author:靓仔建
联系方式:qq(1337489969) 微信(gaolian1025)
给大伙看看效果。
实现效果思想逻辑:
1,先用js代码获取要拖拉的HTML元素的位置x和y
2,在C#代码中设置鼠标左键点击按住事件SendMouseClickEvent,声明要一点一点要拖拉距离List,然后遍历这个List的一个距离给要拖拉事件SendMouseMoveEvent
关键C#代码:
private void button8_Click(object sender, EventArgs e)
ChromiumWebBrowser cw = chromiumWebBrowser1;
Task.Run(() =>
listrequest.Clear();
cw.Load("file:///E:/BaiduYunDownload/%E6%BB%91%E5%8A%A8%E9%AA%8C%E8%AF%81%E7%A0%81%E7%A0%94%E7%A9%B6/%E6%BB%91%E5%8A%A8html.html");
csbrowser.WaitBusy(cw, 30, 1000);
var result = cw.GetMainFrame().EvaluateScriptAsync(Properties.Resources.CSS_JS);
var btss = csbrowser.EvaluateScript(cw.GetBrowser().MainFrame, Properties.Resources.CSS_JS);
csbrowser.WaitBusy(cw, 30, 1000);
List<string> lisTT = btss.Split(',').ToList();
int x = int.TryParse(lisTT[0], out int result_X) ? result_X : 0;
int y = int.TryParse(lisTT[1], out int result_Y) ? result_Y : 0;
var host = cw.GetBrowser().GetHost();
cw.GetBrowserHost().SendMouseClickEvent(x, y, MouseButtonType.Left, false, 1, CefEventFlags.LeftMouseButton);
List<int> removeInt = new List<int>();
removeInt.Add(10);
removeInt.Add(50);
removeInt.Add(10);
removeInt.Add(30);
removeInt.Add(40);
removeInt.Add(30);
removeInt.Add(30);
removeInt.Add(40);
removeInt.Add(60);
foreach (int item in removeInt)
x = (x + item);
Thread.Sleep(300);
host.SendMouseMoveEvent(x, y, false, CefEventFlags.LeftMouseButton);
host.SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.LeftMouseButton);//抬起鼠标左键
关键js代码:
var obj = document.getElementsByClassName("btn");
var es = document.getElementsByTagName("div");
for (var i = 0; i < es.length; i++) {
//arrow-right-icon arrow-button
if (es[i].className == "btn") {
obj = es[i];
break;
function GetObjPos(ATarget) {
var target = ATarget;
var pos = new CPos(target.offsetLeft, target.offsetTop);
target = target.offsetParent;
while (target) {
pos.x += target.offsetLeft;
pos.y += target.offsetTop;
target = target.offsetParent;
return pos;
function CPos(x, y) {
this.x = x;
this.y = y;
[ GetObjPos(obj)['x'], GetObjPos(obj)['y']].toString();
该文为原创文章,转载请注明原文出处
本文章博客地址:CefSharp 实现拖拉滑动验证Demo_靓仔建的博客-CSDN博客
C# CSharp用CefSharp开发浏览器--鼠标模拟,鼠标事件,鼠标点击,鼠标移动效果:模拟鼠标点击、移动,自动画线。开发环境方案一个坑代码
效果:模拟鼠标点击、移动,自动画线。
研究 网络爬虫和一些 验证码破解(人类行为检测) 时候,需要 自动 鼠标点击,鼠标移动等。初步找到个满意的方案,写了个案例。
WinForm程序 内嵌浏览器。并在某在线画图网站上,模拟鼠标 点击,移动,画线。
1、CefSharp.v75.1.143.0浏览器Demo的完全WPF版,项目中完全使用的是WPF元素,没有引用Winform相关的组件。
2、支持页面通过post请求数据
3、为减少资源体积,代码包中没有CefSharp75的依赖文件,请自己下载放到CefSharp文件夹中
4、关键词 cefsharp 禁止弹出新窗体,在同一窗口打开链接 支持post提交
第一步:了解什么是CefSharp
CefSharp简单来说就是一款.Net编写的浏览器包,方便你在Winform和WPF中内嵌的Chrome浏览器组件,用过Chrome内核组件来加载处理html页面,以此实现你在winform中访问网页或处理html页面。
为什么要使用CefSharp?个人觉得有以下方面好处:
1)当你无法用winform控件来实现一些界面样式或者html才能实现的一些功能的时候,你就需要将你的winform界面改为html+js来处理,比如:echart丰富的报表,高大上的...
CefSharp的SendMouseClickEvent,通过此函数发送鼠标点击事件。
先借助jQuery获取指定DOM的偏移,然后发送SendMouseClickEvent完成模拟点击操作。
/// <summary>
/// 模拟点击指定选择符DOM元素
/// </summary>
/// <param name="selector">...
CefSharp是做什么用的?请看前一篇文章:怎么用c#编写浏览器或者执行javascript代码?
之后就是如何开发了。这个CefSharp最坑的是,还早不到文档,只能看着官方给的例子开发。项目地址
那么就可以看到,带有example的都是例子。
我给大家举2个例子。
1.事件添加:我想让我的程序出了网页上的js代码,再额外的执行我自己写的js,怎么办呢?
InitializeCom