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

时间:2017-09-21 10:50:38

标签: c# google-chrome selenium selenium-webdriver selenium-chromedriver

在过去的两天里,我一直试图找到一种方法来启动具有不同配置文件的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临时目录。

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

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

4 个答案:

答案 0 :(得分:5)

你根本不使用选项对象。

IWebDriver driver = new ChromeDriver();

应该是

IWebDriver driver = new ChromeDriver(options);

编辑-1 - Chrome个人资料和用户

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

  • 用户数据目录
  • 轮廓目录

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

答案 1 :(得分:0)

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

  1. 打开普通的Google Chrome浏览器,然后转到('chrome:// version') enter link description here
  2. 复制配置文件路径,但将所有“数据”文件夹复制到程序运行的位置
  3. C#编码:

    https://rextester.com/INK23784

通过在运行程序的位置创建一个名为“ profile”的文件夹,可以添加所有配置文件信息,插件等。等等。我们已经复制了data文件夹中的所有内容,并在打开浏览器“ ChromeOptions”以硒化您的个人资料文件等时使用了

答案 2 :(得分:0)

您可以尝试以下代码:(对我有用)

webview.configuration.preferences.javaScriptEnabled = true
webview.configuration.preferences.javaScriptCanOpenWindowsAutomatically = true
webview.configuration.allowsInlineMediaPlayback = true
webview.configuration.allowsAirPlayForMediaPlayback = true

答案 3 :(得分:0)

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.");
    }
}