繁体   English   中英

C# Selenium 使用不同的用户配置文件启动 Chrome

[英]C# Selenium Start Chrome with Different User Profile

在过去的 2 天里,我一直试图找到一种方法来使用不同的配置文件启动 Chrome,但无济于事。 无论我做什么,Selenium 为 chrome 加载的配置文件始终是一些临时配置文件,例如“C:\\Users\\DARKBO~1\\AppData\\Local\\Temp\\scoped_dir14308_25046\\Default”

我尝试了以下代码:

ChromeOptions options = new ChromeOptions();
options.AddArgument(@"user-data-dir=C:\SeleniumProfiles\Default");

IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("chrome://version");

首先,我尝试直接从 Chrome 文件夹中使用配置文件的目录,但没有用。 然后我创建了一个新文件夹并将配置文件移到那里,我尝试在 C:\\ 和 D:\\ 中执行此操作。 没有任何区别。 我试过像当前在代码中一样运行 user-data-dir 参数,并在它前面加上 -- 。 我试过使用没有@ 符号的双反斜杠,仍然没有。 无论我做什么,配置文件目录始终是 Selenium 临时目录。

PS 当前 C:\\SeleniumProfiles 目录我使用chrome user-data-dir=C:\\SeleniumProfiles命令通过命令提示符创建

PS 2:我的错误很简单,我忘了把选项放在新驱动的构造函数中。 正如 Tarun 明确指出的那样, user-data-dir只为 Chrome 提供包含配置文件的目录,然后我们需要使用profile-directory参数来提供包含所需配置文件的子目录。

您根本不使用选项对象。

IWebDriver driver = new ChromeDriver();

应该是

IWebDriver driver = new ChromeDriver(options);

Edit-1 - Chrome 个人资料和用户

Chrome 具有用于存储配置文件的用户数据目录。 在这个目录中可以维护多个配置文件。 有两个参数可以使用

  • 用户数据目录
  • 配置文件目录

如果仅指定了user-data-directory ,则将使用其中的Default目录。 如果指定了profile-directory则使用user-data-directory那个目录

如果您从要查找的计算机上的浏览器配置文件开始,您可以

  1. 打开普通的谷歌浏览器并转到 ('chrome://version')在此处输入链接描述

  2. 复制配置文件路径但获取所有“数据”文件夹并将其复制到程序运行的位置

  3. C# 编码:

    https://rextester.com/INK23784

通过在程序运行的地方创建一个名为“profile”的文件夹,您可以添加所有的配置文件信息、插件等。 等。我们已经复制了所有内容中的数据文件夹,当打开浏览器“ChromeOptions”以硒您的配置文件等时,这就是一切

你可以试试这个代码:(它对我有用)

string path_profile = @"D:\PROJECT_XMARKETING_4.0\Profiles\1";
// string path_profile = @"D:\PROJECT_XMARKETING_4.0\Profiles2\2";
IWebDriver _webDriver;
ChromeDriverService cService = ChromeDriverService.CreateDefaultService();
cService.HideCommandPromptWindow = true;
_webDriver = new ChromeDriver(cService);
_webDriver.Manage().Cookies.DeleteAllCookies();
ChromeOptions options = new ChromeOptions();
options.AddArgument($"user-data-dir={path_profile}");
_webDriver = new ChromeDriver(cService, options);
//_webDriver.Navigate().GoToUrl("https://phamtani.com/");
//_webDriver.Navigate().GoToUrl("https://alink.vn/");
//_webDriver.Navigate().GoToUrl("http://api.hostip.info/get_json.php");

user-data-dir 设置为 C:\\Users[your-username]\\AppData\\Local\\Google\\Chrome\\User Data

完整代码:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;

private IWebDriver _driver { set; get; }

public YourConstructor()
{
    _driver = CreateBrowserDriver();
}

private IWebDriver CreateBrowserDriver()
{
    try
    {
        var options = new ChromeOptions();
        options.AddArgument("test-type");
        options.AddArgument("--ignore-certificate-errors");
        options.AddArgument("no-sandbox");
        options.AddArgument("disable-infobars");
        //options.AddArgument("--headless"); //hide browser
        options.AddArgument("--start-maximized");
        //options.AddArgument("--window-size=1100,300");
        //options.AddUserProfilePreference("profile.default_content_setting_values.images", 2);

        // Profile [Change:User name]
        options.AddArgument(@"user-data-dir=C:\Users\Haddad\AppData\Local\Google\Chrome\User Data");

        var service = ChromeDriverService.CreateDefaultService();
        service.HideCommandPromptWindow = true;
        service.SuppressInitialDiagnosticInformation = true;

        return new ChromeDriver(service, options);
    }
    catch
    {
        throw new Exception("Error: Chrome is not installed.");
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM