该文为原创文章,转载请注明原文出处
本文章博客地址: 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"&gt... CefSharp是做什么用的?请看前一篇文章:怎么用c#编写浏览器或者执行javascript代码? 之后就是如何开发了。这个CefSharp最坑的是,还早不到文档,只能看着官方给的例子开发。项目地址 那么就可以看到,带有example的都是例子。 我给大家举2个例子。 1.事件添加:我想让我的程序出了网页上的js代码,再额外的执行我自己写的js,怎么办呢? InitializeCom