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;
        }
    }
}
View Code

服务使用示例:

var services = new ServiceCollection();
//添加谷歌服务
services.AddChrome();
var provider = services.BuildServiceProvider();
var chromeDriver= provider.GetServices<ChromeDriver>();
chromeDriver.Url = "http://www.baidu.com";

补充说明:

增加谷歌浏览器配置选项,目的是使自动化控制的浏览器继承现有的配置,比如Cookies等;

posted @ 2021-02-10 20:39  顺其自然,道法自然  阅读(460)  评论(0编辑  收藏  举报