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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM