【问题标题】:How to open the Default Chrome Profile through Selenium, ChromeDriver and GoogleChrome如何通过 Selenium、ChromeDriver 和 GoogleChrome 打开默认 Chrome 配置文件
【发布时间】:2018-12-18 23:55:17
【问题描述】:

我想加载一个使用 Chrome 的新 Selenium ChromeDriver,就好像我从我的扩展坞打开 Chrome 一样(基本上它会包含我所有的扩展程序、历史记录等)

当我使用以下代码时:

ChromeOptions options = new ChromeOptions();
options.AddArgument("user-data-dir=C:\\Users\\User\\AppData\\Local\\Google\\Chrome\\User Data\\");
options.AddArgument("disable-infobars");
options.AddArgument("--start-maximized");
ChromeDriver chromeDriver = new ChromeDriver(options);

它会加载 Chrome 浏览器,让我登录到我的 Gmail 和我的所有扩展程序,就像我想要的那样,但我的其余代码:

chromeDriver.Navigate().GoToUrl("https://www.youtube.com/");

不执行。但是当我使用以下

ChromeOptions options = new ChromeOptions();
options.AddArgument("user-data-dir=C:\\Users\\Andrea\\AppData\\Local\\Google\\Chrome\\User Data\\Default");
options.AddArgument("disable-infobars");
options.AddArgument("--start-maximized");
ChromeDriver chromeDriver = new ChromeDriver(options);

我的其余代码执行完美(注意添加到第一个参数末尾的“默认”)。关于如何获得第一个代码块(最后没有“默认”的那个)来执行我的程序的其余部分的任何提示或建议都会很棒。谢谢!

【问题讨论】:

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


    【解决方案1】:

    我知道这是一个老问题,但对我有用的是删除“C:\”并将所有反斜杠替换为正斜杠。因此,从原始问题来看,这应该可以加载默认配置文件:

    options.AddArgument("user-data-dir=/Users/User/AppData/Local/Google/Chrome/User Data");

    【讨论】:

      【解决方案2】:

      您用于常规任务的默认 Chrome 配置文件可能包含以下任一/所有项目:

      • 历史
      • 书签
      • Cookie
      • 扩展
      • 主题
      • 自定义字体

      所有这些配置直到和除非是您的测试规范的一部分,将它们加载到由Selenium WebDriver发起的会话中将是一种过度杀伤力。因此,如果您为测试创建一个专用的新 Chrome 配置文件并使用所有必需的配置对其进行配置,这将是一种更好的方法。

      这里有关于How to create and open a Chrome Profile的详细讨论

      为测试创建专用的新 Chrome 配置文件后,您可以轻松调用 Chrome 配置文件,如下所示:

      ChromeOptions options = new ChromeOptions();
      options.AddArgument("user-data-dir=C:\\Users\\User\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2");
      options.AddArgument("disable-infobars");
      options.AddArgument("--start-maximized");
      ChromeDriver chromeDriver = new ChromeDriver(options);
      chromeDriver.Navigate().GoToUrl("https://www.youtube.com/");
      

      这里有关于How to open URL through default Chrome profile using Python Selenium Webdriver的详细讨论

      【讨论】:

        【解决方案3】:

        我也有同样的问题。我不知道如何解决它,我猜根本原因是配置文件路径中的空白。

        我知道一个解决方法。只需将C:\\Users\\Andrea\\AppData\\Local\\Google\\Chrome\\User Data 复制到c:\myUserData(路径中没有空格)。

        然后添加参数。

        options.AddArgument("user-data-dir=C:\\myUserData");
        

        【讨论】:

        • 我通过确保谷歌浏览器完全关闭,没有打开任何窗口/标签来让它工作。当我运行该程序时它可以工作,但是如果我打开了一个 chrome 窗口并运行该程序,则该程序无法正常运行
        【解决方案4】:

        这是一个老问题,但如果你遇到这个问题,你所要做的就是关闭所有选项卡,只需关闭 chrome 窗口..

        Selenium 无法使用该数据,因为它已在使用中。

        希望您喜欢这篇文章。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-12-24
          • 1970-01-01
          • 2018-08-22
          • 1970-01-01
          • 1970-01-01
          • 2018-11-11
          相关资源
          最近更新 更多