cef3 模擬瀏覽器,點擊下載文件時,需要判斷文件是否下載完成,來繼續下一步操作。
解決:重寫 IDownloadHandler 接口
class DownloadHandler : IDownloadHandler { public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) { if (!callback.IsDisposed) { using (callback) { DownCrawler.isDownload = false; //標識置為false,表示正在下載 string fileLocation = downloadItem.SuggestedFileName.Substring(0, downloadItem.SuggestedFileName.IndexOf(".")); //文件路徑 Debug.WriteLine(fileLocation); callback.Continue(@"C:\Downloads\one\" + downloadItem.SuggestedFileName, showDialog: false); //設置文件存放路徑 } } } public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) { //如果下載完成 if (downloadItem.IsComplete) { Debug.WriteLine("下載完成"); DownCrawler.isDownload = true; //標識置為true,表示下載完成 } } }
應用該重寫接口
browser.DownloadHandler = new DownloadHandler();
然后在執行代碼中 插入循環判斷 下載標識 是否為true
while(!DownCrawler.isDownload){ Thread.Sleep(2000); }
