大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
该文为原创文章,转载请注明原文出处
本文章博客地址: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博客
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191793.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...