• c# cef3 模拟浏览器上传文件


    操作:鼠标左键点击,“导入文件”按钮,在弹出框中选择导入文件。

    需要解决2个问题:

    1.模拟操作时,自动选择上传文件。

    2.模拟鼠标左键点击上传按钮。(单纯使用js,jq模拟click无法上传文件)

    问题一: 重写 IDialogHandler 接口

     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是取消的问题 } }

    应用该重写接口

    browser.DialogHandler = new DialogHandler(path);  //path可以为窗体程序中,设置一个选择文件的功能,获取选中文件的路径

    问题二:利用IBrowserHost对象,发送模拟点击操作

    难点:需要知道目标按钮在模拟浏览器中的x,y坐标。

      //鼠标左键点击
    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);
  • 相关阅读:
    软件工程
    python 浮点数四舍六入五成双
    python 比较内嵌字典的值
    python 之多继承顺序及supper()方法执行顺序
    python之装饰器进化
    Centos7 安装Postgres10
    hive常用操作
    MySQL中case when else end 用法
    python写入日志文件时日志内容重复写入
    python向config、ini文件读取写入
  • 原文地址:https://www.cnblogs.com/yhood/p/11535227.html
Copyright © 2020-2023  润新知