当前位置: 首页 > 知识库问答 >
问题:

如何通过Selenium的--user data dir参数打开Chrome配置文件

茅和玉
2023-03-14

我试图加载一个chrome浏览器与硒使用我现有的帐户和设置从我的个人资料。

我可以使用ChromeOptions来设置userdatadir和配置文件目录。这就像我想要的那样加载浏览器的配置文件,但是浏览器会挂起60秒并超时,而不会继续进行任何自动化操作。

如果我不使用用户数据目录和配置文件设置,它可以正常工作,但不使用我的配置文件。

我所做的阅读表明,不能用同一个配置文件同时打开多个浏览器,因此我确保在运行程序时没有打开任何浏览器。即使没有打开另一个浏览器,它仍然会挂起60秒。

m_Options = new ChromeOptions();
m_Options.AddArgument("--user-data-dir=C:/Users/Me/AppData/Local/Google/Chrome/User Data");
m_Options.AddArgument("--profile-directory=Default");
m_Options.AddArgument("--disable-extensions");
m_Driver = new ChromeDriver(@"pathtoexe", m_Options);
m_Driver.Navigate().GoToUrl("somesite");

它总是挂在GoToUrl上。我不知道还能尝试什么。

共有2个答案

毛勇
2023-03-14

如果您想使用默认配置文件运行Chrome(因为您需要扩展),则需要使用其他浏览器(如Microsoft Edge或Microsoft IE)运行您的脚本,并且您的代码将包含一个Chrome实例。

我的PHP代码:

namespace Facebook\WebDriver;
use Facebook\WebDriver\Remote\DesiredCapabilities;
use Facebook\WebDriver\Remote\RemoteWebDriver;
use Facebook\WebDriver\Chrome\ChromeOptions;

require_once('vendor/autoload.php');

$host = 'http://localhost:4444/';

$options = new ChromeOptions();
$options->addArguments(array(
    '--user-data-dir=C:\Users\paulo\AppData\Local\Google\Chrome\User Data',
    '--profile-directory=Default',
    '--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
));
   
$caps = DesiredCapabilities::chrome();
$caps->setCapability(ChromeOptions::CAPABILITY, $options);
$caps->setPlatform("Windows");

$driver = RemoteWebDriver::create($host, $caps);

$driver ->manage()->window()->maximize();

$driver->get('https://www.google.com/');

// your code goes here.

$driver->quit();
充栋
2023-03-14

根据您的代码试用,您试图加载默认的Chrome配置文件,这将违反所有最佳实践,因为默认的Chrome配置文件可能包含以下任一项:

  • 扩展

因此,默认的Chrome配置文件可能不符合您的测试规范,并且在加载时可能引发异常。因此,您应该始终使用自定义的Chrome配置文件,如下所示。

要创建和打开新的Chrome配置文件,您需要遵循以下步骤:

  • 打开Chrome浏览器,点击侧菜单,点击urlchrome://settings/打开
  • 现在,桌面图标将被创建为SeLeNiUm-Chrome
  • 从桌面图标SeLeNiUm-Chrome的属性中获取配置文件目录的名称。e、 g.——profile directory=“profile 2”

>

  • 获取系统中的配置文件目录的绝对路径,如下所示:

    C:\\Users\\Thranor\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2
    

    现在,使用AddArgument方法将profile directory的值与关键用户数据dir一起传递给ChromeOptions实例,如下所示:

    m_Options = new ChromeOptions();
    m_Options.AddArgument("--user-data-dir=C:/Users/Me/AppData/Local/Google/Chrome/User Data/Profile 2");
    m_Options.AddArgument("--disable-extensions");
    m_Driver = new ChromeDriver(@"pathtoexe", m_Options);
    m_Driver.Navigate().GoToUrl("somesite");
    

    执行你的测试

  •  类似资料:
    • 我一直在写的脚本工作得很好。我刚刚添加了一个选项,这样它就可以使用这个代码在chrome上打开一个配置文件。 使用时,我得到这个错误代码。 我该怎么解决这个问题?

    • 我想通过在selenium webdriver中按键盘键Ctrl打开chrome浏览器控制台。我可以使用Robot类来做这个动作,但我希望没有Robot类。我使用了Actions类和Keys类,使用的是sendKeys。但我无法打开浏览器控制台。 是chrome浏览器版本问题还是操作系统问题?为什么浏览器控制台没有使用Action类和Keys类打开?

    • 问题内容: 我对编程和python语言非常陌生。 我知道如何在python中打开文件,但问题是如何将文件作为函数的参数打开? 例: 这是我写出代码的方式: 问题答案: 您可以轻松地传递文件对象。 然后在您的函数中,返回行列表 另一个技巧是,python文件对象实际上具有读取文件行的​​方法。像这样: 第二种方法,就像您的功能一样。您不必再次调用它。 更新 这里是您应该如何编写代码的方法: 第一种方

    • 我想通过selenium webdriver 3.6.0启动Firefox浏览器,并更改浏览器的一些默认设置。具体来说,我希望Firefox在自动测试期间下载文件,而不提示是否保存文件,也不提示是否下载到默认目录以外的预定义目录,即downloads文件夹。 在google chrome上执行此操作的方法如下: 在创建新配置文件后,通过设置首选项,在Firefox上进行相关尝试,但没有成功。 我包

    • 自首次报道以来已经6年了:https://github.com/SeleniumHQ/selenium/issues/854 从这里https://chromedriver.chromium.org/getting-started我尝试这个代码: 当它启动时,去吧chrome://version/ 请参阅: 配置文件路径C:\Users\USERCU~1\AppData\Local\Temp\sc

    • 我之前做过,但现在无法通过selenium使用chrome。浏览器打开几秒钟后关闭,然后出现错误(大约5分钟后): 我使用以下代码运行浏览器(我一直使用): ChromeDrive目录位于PATH中。你可以在错误中看到的chrome和chrome驱动程序的版本。Python 3.7.0,硒==3.14.0。我的行为有什么问题? 顺便说一句,它可以与Firefox配合使用