WPF+CEF 执行JS报错
在WPF中执行 webBrowser.EvaluateScriptAsync(“window.scrollBy(0, 1000);”);
在部分网站会报异常:
Request BrowserId : XXXX not found it’s likely the browser is already closed
环境
.Net Framework 4.7
CefSharp.Wpf 131.3.50
解决方案:
使用CEF的控制台去执行
// xaml 页面
<cef:ChromiumWebBrowser x:Name="webBrowser" />
//using CefSharp.Wpf;public static async Task<ResultInfo> GetEvaluateJsAsync(ChromiumWebBrowser webBrowser, string js)
{var res = new ResultInfo() { Success = false };try{if (webBrowser == null || webBrowser.IsDisposed)return res;var client = webBrowser.GetDevToolsClient();if (client == null)return res;var result = await client.Runtime.EvaluateAsync(js, null, true, null, null, true, null, true);if (result == null || result.ExceptionDetails != null)return res;res.Result = result.Result.Value?.ToString();res.Success = true;return res;}catch (Exception ex){res.Result = ex.Message;return res;}
}public class ResultInfo{public bool Success { get; set; }public string Result { get; set; }}