C#应用Selenium学习:创建谷歌浏览器驱动服务
控制浏览器做一些自动化任务的时候,比较常用的是Selenium组件,本文介绍如何创建谷歌浏览器的驱动。
服务实现完整代码如下:
using OpenQA.Selenium.Chrome; using System; using System.IO; namespace Microsoft.Extensions.DependencyInjection { public static class ServiceCollectionExtensions { /// <summary> /// 获得谷歌浏览器配置文件路径 /// </summary> /// <returns></returns> private static string GetChromeProfileDir() { //获得%AppData%路径,结果:C:\Users\xxx\AppData\Roaming //参考:https://www.cnblogs.com/minamiko/archive/2011/12/25/2300798.html var appDataDir=Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); //"C:\Users\xxx\AppData\Roaming" => "C:\Users\xxx\AppData\Local\Google\Chrome\User Data\Profile 1" //如何快速找到Chrome浏览器配置文件路径,请参考: https://www.office26.com/computer/find-chrome-profile-folder.html var res=Path.Combine(appDataDir, @"..\Local\Google\Chrome\User Data\Profile 1"); res = Path.GetFullPath(res); return res; } /// <summary> /// 生成谷歌浏览器Selenium的驱动,并且能够复用之前谷歌浏览器的配置,包括Cookie等信息 /// </summary> /// <returns></returns> public static ChromeDriver GetChromeDriver() { var driverOptions = new ChromeOptions(); driverOptions.AddArgument($"user-data-dir={GetChromeProfileDir()}"); var res= new ChromeDriver(driverOptions); //使窗口最大化,这一步可以省略 res.Manage().Window.Maximize(); return res; } /// <summary> /// 添加控制谷歌浏览器的驱动服务扩展 /// </summary> /// <param name="services"></param> /// <returns></returns> public static IServiceCollection AddChrome(this IServiceCollection services) { services.AddSingleton<ChromeDriver>(GetChromeDriver()); return services; } } }
服务使用示例:
var services = new ServiceCollection(); //添加谷歌服务 services.AddChrome(); var provider = services.BuildServiceProvider(); var chromeDriver= provider.GetServices<ChromeDriver>(); chromeDriver.Url = "http://www.baidu.com";
补充说明:
增加谷歌浏览器配置选项,目的是使自动化控制的浏览器继承现有的配置,比如Cookies等;