c# cef3 模拟浏览器上传文件
操作:鼠标左键点击,“导入文件”按钮,在弹出框中选择导入文件。
需要解决2个问题:
1.模拟操作时,自动选择上传文件。
2.模拟鼠标左键点击上传按钮。(单纯使用js,jq模拟click无法上传文件)
问题一: 重写 IDialogHandler 接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | internal sealed class DialogHandler : IDialogHandler { public string path { get ; set ; } public DialogHandler( string path) { this .path = path; } public bool OnFileDialog(IWebBrowser chromiumWebBrowser, IBrowser browser, CefFileDialogMode mode, CefFileDialogFlags flags, string title, string defaultFilePath, List< string > acceptFilters, int selectedAcceptFilter, IFileDialogCallback callback) { string [] filePaths = new string [1]; filePaths[0] = path; callback.Continue(0, filePaths.ToList()); return true ; //return false;--false是取消的问题 } } |
应用该重写接口
1 | browser.DialogHandler = new DialogHandler(path); //path可以为窗体程序中,设置一个选择文件的功能,获取选中文件的路径 |
问题二:利用IBrowserHost对象,发送模拟点击操作
难点:需要知道目标按钮在模拟浏览器中的x,y坐标。
1 2 3 4 | //鼠标左键点击 var host = browser.GetBrowser().GetHost(); //鼠标单次点击,需要按下并松开,所以需要两个指令,false为按下,true为松开 host.SendMouseClickEvent(x, y, MouseButtonType.Left, false , 1, CefEventFlags.None); Thread.Sleep(300); host.SendMouseClickEvent(x, y, MouseButtonType.Left, true , 1, CefEventFlags.None); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!