簡體   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