1,input输入value失败,里面要套了个事件,再变换输入value。后来用浏览器开发工具,研究js代码,太难了,涉及react.js(猜测)。
2,滑动往右拖的时候,快点终点时就要提前必须慢慢的拖过去,快得话,会滑动失败。
C#代码:
string ph = textBox1.Text.Trim();
//拼接js要的输入内容
string code = "let input = document.getElementById(\"phone\");input.value = '" + ph + "';let event = new Event('input', { bubbles: true });event.simulated = true;let tracker = input._valueTracker;if (tracker) {tracker.setValue(input); }input.dispatchEvent(event);setTimeout(() => {document.getElementsByClassName('timer-button')[0].click();}, 3000);";
Task task = Task.Run(() =>
chromiumWebBrowser1.GetMainFrame().ExecuteJavaScriptAsync(code);
if (task.Wait(5000))
Task.Run(() =>
Thread.Sleep(5000);
//浏览器执行js代码
var btss = csbrowser.EvaluateScript(chromiumWebBrowser1.GetMainFrame(), Properties.Resources.CSS_JS2);
csbrowser.WaitBusy(chromiumWebBrowser1, 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 = chromiumWebBrowser1.GetMainFrame().Browser.GetHost();
//按住鼠标鼠标左键
chromiumWebBrowser1.GetBrowserHost().SendMouseClickEvent(x + 15, y + 20, MouseButtonType.Left, false, 1, CefEventFlags.None);
//滑动数据
List<int> removeInt = new List<int>();// 160
removeInt.Add(130);
removeInt.Add(20);
removeInt.Add(30);
removeInt.Add(30);
removeInt.Add(10);
//遍历滑动距离
foreach (int item in removeInt)
x = (x + item);
Thread.Sleep(30);
host.SendMouseMoveEvent(x, y, false, CefEventFlags.LeftMouseButton);
//抬起鼠标左键
host.SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
catch (Exception)
throw;
js代码,获取坐标。
var obj = document.getElementsByClassName("boxStatic ");
var es = document.getElementsByTagName("div");
for (var i = 0; i < es.length; i++) {
if (es[i].className.indexOf("boxStatic") >= 0 ) {
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();
该文为原创文章,转载请注明原文出处
本文章博客地址:C# CefSharp 输入内容,点击按钮,并且滑动。
Author:靓仔建gaolian1025
(待业中,希望帮助到各位,大家的支持是创作最大动力!)
为了实现
滑动的功能,需要用到【Timer对象】的帮助。为此需要在【窗体类的构造函数】里面添加一下代码: //必须要在此显式声明这个用于
滑动的Timer控件,才能减少每次调用的延迟。
myTimer = new Timer();
myTimer.Interval = intTimerInterval;
SetCursorPos(x, y);
mouse_event((int)(MouseEventFlags.LeftDown | MouseEventFlags.Absolute), 0, 0, 0, IntPtr.Zero);
mouse_event((int)(MouseEventFlags.LeftUp | MouseEventFlags.Absolute), 0, 0, 0, IntPtr.Zero);
finally
SetCursorPos(p.X, p.Y);
private void Form1_Load(object sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
Point p = this.button2.PointToScreen(button2.Location);
AutoClick(p.X , p.Y );
private void button2_MouseClick(object sender, MouseEventArgs e)
button2.Text = "哈哈,点击了!!!!!!!";
首先,本文所有 代码已经提交到github,需要的可以直接从github获取:https://github.com/starts2000/CefSharp,希望可以帮助到有需要的朋友们。
CEF 简介
CEF is a BSD-licensed open source project founded by Marshall Greenblatt in 2008 and based on the...
document.getElementsByClassName('btn_addtocart')[0].click();
document.querySelector('.btn_addtocart').click();
document.getElementsByClassName('btn_addtocart')[0].InvokeMember("click");
本程序基于
CefSharp实现自动打开一个网站,自动
输入账号密码自动注册。然后跳转到商品页自动
输入评论的
内容然后提交。完全模拟人为在
浏览器的所有操作,包括自动
输入,自动点击等操作。
本解决方案可以应用于网络爬虫,刷单,刷评论,参与自动秒杀活动。抢票程序等等。
最终效果如下:
CefSharp是一个用于Chromium Embedded Framework (CEF)的.NET封装库,它允许你在.NET应用程序中嵌入Chrome浏览器的功能。如果你想要在C#中模拟点击操作,通常是在处理网页元素时,你可以利用CefSharp提供的API来控制浏览器的内容。
例如,你可以通过以下步骤模拟鼠标点击:
1. 首先,你需要获取到要点击的元素,这通常是通过JavaScriptExecutor执行JavaScript代码来获取元素,比如`IWebBrowser.ExecuteScriptAsync("document.getElementById('yourElementId')")`。
2. 然后,当你得到了元素的句柄,如`IDialog`、`IScriptDialog` 或者其他的DOM对象,可以调用`Focus()` 方法让焦点移到该元素上。
3. 使用`MouseInput.SendMouseClick()` 方法,传入适当的参数,如左键单击(`MouseButtons.Left`)、坐标(`Point` 对象)以及额外的行为选项(如 `HitTestContent` 表示是否只在内容区域内触发点击)。
```csharp
using CefSharp.WinForms;
var elementHandle = ExecuteScriptAsync(...);
elementHandle.Wait();
// 模拟左键单击,坐标为屏幕中心
var point = new Point(Screen.PrimaryScreen.Bounds.Width / 2, Screen.PrimaryScreen.Bounds.Height / 2);
mouseInput.SendMouseClick(point, MouseButtons.Left, Control.MouseButtonGetState());
请注意,实际操作可能会因版本差异略有不同,一定要查阅最新的官方文档。