CefSharp 实现拖拉滑动验证Demo

CefSharp 实现拖拉滑动验证Demo给大伙看看效果。滑动验证

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

该文为原创文章,转载请注明原文出处
本文章博客地址:CefSharp 实现拖拉滑动验证Demo_靓仔建的博客-CSDN博客

author:靓仔建

联系方式:qq(1337489969) 微信(gaolian1025)

给大伙看看效果。

CefSharp 实现拖拉滑动验证Demo
滑动验证

实现效果思想逻辑:

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博客

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191793.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 编写程序计算1~10的平方和_用指针比较两个数大小

    编写程序计算1~10的平方和_用指针比较两个数大小给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。示例 1:输入:c = 5输出:true解释:1 * 1 + 2 * 2 = 5示例 2:输入:c = 3输出:false示例 3:输入:c = 4输出:true示例 4:输入:c = 2输出:true示例 5:输入:c = 1输出:true提示:0 <= c <= 231 – 1题解双指针,注意整形溢出class Solution {public

    2022年8月9日
    9
  • BIST

    BISTBIST即是在设计时在电路中植入相关功能电路用于提供自我测试功能的技术,BIST把测试仪的部分功能转移到电路内部,用嵌入到电路中的测试电路提供输入测试向量和分析响应的功能,最后输出简单的测试结果。根据被测试的对象不同,BIST测试分为LogicBIST和MemoryBIST。LogicBIST原理结构:实现方法一般基于STUMPS结构,包含测试向量生成模块PRPG、响应分析模块M

    2025年8月20日
    4
  • 同步测试

    同步测试##要求:1编译运行附件中的代码,提交运行结果截图,并说明程序功能2修改代码,把同步资源个数减少为3个,把使用资源的线程增加到(你的学号%3+4)个,编译代码,提交修改后的代码和运行结果

    2022年7月2日
    26
  • django drf_mnbkdrf

    django drf_mnbkdrf前言我们上篇文章使用到了Serializer类,可能有小伙伴说太过复杂,那么本篇就为大家带来更加简便的序列化类ModelSerializerModelSerializer先来看下ModelSer

    2022年8月7日
    6
  • 扩展卡尔曼滤波EKF与多传感器融合

    扩展卡尔曼滤波EKF与多传感器融合ExtendedKalmanFilter(扩展卡尔曼滤波)是卡尔曼滤波的非线性版本。在状态转移方程确定的情况下,EKF已经成为了非线性系统状态估计的事实标准。本文将简要介绍EKF,并介绍其在无人驾驶多传感器融合上的应用。

    2022年6月16日
    70
  • borrow用法及短语(that is ok用法)

    publicclassMainActivityextendsAppCompatActivity{Stringpath=”https://www.zhaoapi.cn/ad/getAd”;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(

    2022年4月10日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号