我需要我的ChromiumWebBrowser加载url数组中的所有页面,在每个页面上执行javascript然后下载它们的源代码。我写了一段代码:
ChromiumWebBrowser[] chromium = new ChromiumWebBrowser[offersLinks.Count()];
for(int i = 0; i < offersLinks.Count(); ++i)
{
Debug.WriteLine("Page " + (i + 1) + "/" + offersLinks.Count());
chromium[i] = new ChromiumWebBrowser(offersLinks[i]);
chromium[i].FrameLoadEnd += async (sender, args) =>
{
//Wait for the MainFrame to finish loading
if (args.Frame.IsMain)
{
Debug.WriteLine("Loaded.");
if (chromium[i].CanExecuteJavascriptInMainFrame)
{
JavascriptResponse response = await chromium[i].EvaluateScriptAsync(javascript);
if (response.Result != null)
{
Debug.WriteLine(response.Message);
}
}
chromium[i].ViewSource();
string html = await chromium[i].GetSourceAsync();
}
};
}
但是,由于某种原因,FrameLoadEnd回调中的代码永远不会执行。你能解释一下吗?
如果您不需要UI
,最好使用CefSharp.OffScreen
WPF
和WinForms
版本的CefSharp
在加入UI
之前不会开始加载。