开发手册 欢迎您!
软件开发者资料库

.NET(C#) CefSharp CommandLine开关参数配置和读取网页源代码方法及示例代码

CefSharp访问和操纵页面上的内容,可以以编程方式执行 JavaScript 并将其嵌入到页面中,并在触发JavaScript事件时接收回调。您可以使用CefSharp显示使用HTML5构建的嵌入式UI,或显示远程Web内容和Web应用程序。Google Chrome浏览器可以使用很多命令行(CommandLine)配置,有些更改功能的行为,而另一些则用于调试或试验。本文主要介绍.NET(C#)中, 使用CefSharp时,CommandLine配置和读取网页源代码方法,以及设置的示例代码。

1、使用CommandLine进行浏览器参数配置

CommandLine开关参数文档chromium-command-line-switches

public static void Init()        {            // Set Google API keys, used for Geolocation requests sans GPS.  See http://www.chromium.org/developers/how-tos/api-keys            // Environment.SetEnvironmentVariable("GOOGLE_API_KEY", "");            // Environment.SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_ID", "");            // Environment.SetEnvironmentVariable("GOOGLE_DEFAULT_CLIENT_SECRET", "");            //Chromium Command Line args            //http://peter.sh/experiments/chromium-command-line-switches/            //NOTE: Not all relevant in relation to `CefSharp`, use for reference purposes only.            var settings = new CefSettings();            settings.RemoteDebuggingPort = 8088;            //The location where cache data will be stored on disk. If empty an in-memory cache will be used for some features and a temporary disk cache for others.            //HTML5 databases such as localStorage will only persist across sessions if a cache path is specified.             settings.CachePath = "cache";            //settings.UserAgent = "CefSharp Browser" + Cef.CefSharpVersion; // Example User Agent            //settings.CefCommandLineArgs.Add("renderer-process-limit", "1");            //settings.CefCommandLineArgs.Add("renderer-startup-dialog", "renderer-startup-dialog");            //settings.CefCommandLineArgs.Add("disable-gpu", "1");            //settings.CefCommandLineArgs.Add("disable-gpu-vsync", "1");            //settings.CefCommandLineArgs.Add("enable-media-stream", "1"); //Enable WebRTC            //settings.CefCommandLineArgs.Add("no-proxy-server", "1"); //Don't use a proxy server, always make direct connections. Overrides any other proxy server flags that are passed.            //settings.CefCommandLineArgs.Add("debug-plugin-loading", "1"); //Dumps extra logging about plugin loading to the log file.            //settings.CefCommandLineArgs.Add("disable-plugins-discovery", "1"); //Disable discovering third-party plugins. Effectively loading only ones shipped with the browser plus third-party ones as specified by --extra-plugin-dir and --load-plugin switches            //Disables the DirectWrite font rendering system on windows.            //Possibly useful when experiencing blury fonts.            //settings.CefCommandLineArgs.Add("disable-direct-write", "1");            var proxy = ProxyConfig.GetProxyInformation();            switch (proxy.AccessType)            {                case InternetOpenType.Direct:                {                    //不要使用代理服务器,总是直接连接。                    settings.CefCommandLineArgs.Add("no-proxy-server", "1");                    break;                }                case InternetOpenType.Proxy:                {                    settings.CefCommandLineArgs.Add("proxy-server", proxy.ProxyAddress);                    break;                }                case InternetOpenType.PreConfig:                {                    settings.CefCommandLineArgs.Add("proxy-auto-detect", "1");                    break;                }            }            settings.LogSeverity = LogSeverity.Verbose;            if (DebuggingSubProcess)            {                var architecture = Environment.Is64BitProcess ? "x64" : "x86";                settings.BrowserSubprocessPath = "..\\..\\..\\..\\CefSharp.BrowserSubprocess\\bin\\" + architecture + "\\Debug\\CefSharp.BrowserSubprocess.exe";            }            settings.RegisterScheme(new CefCustomScheme            {                SchemeName = CefSharpSchemeHandlerFactory.SchemeName,                SchemeHandlerFactory = new CefSharpSchemeHandlerFactory()            });            Cef.OnContextInitialized = delegate            {                Cef.SetCookiePath("cookies", true);            };            if (!Cef.Initialize(settings, shutdownOnProcessExit: true, performDependencyCheck: !DebuggingSubProcess))            {                throw new Exception("Unable to Initialize Cef");            }        }

2、读取网页源代码

1) 在页面加载完成后处理, 依赖最低环境 4.5.2

async void browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)  
{
Log.WriteLog("browser_FrameLoadEnd:" + e.Url);
var result = await browser.GetSourceAsync();
}

2) 4.0下环境操作需要使用。

 var task = browser.GetSourceAsync();  
task.Wait();
string content = task.Result;

相关文档

https://github.com/cefsharp/CefSharp/wiki/Quick-Start
.Net(C#) cefsharp Chrome 浏览器控件后台执行Iframe中的Js代码的方法
.NET(C#) cefsharp 设置浏览器默认语言和userAgent及示例代码