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的控制台去执行
xml
// xaml 页面
<cef:ChromiumWebBrowser x:Name="webBrowser" />
csharp
//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; }
}