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);

  

 
posted @   多见多闻  阅读(344)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示