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

时间:2018-06-01 01:58:23

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

我正在尝试使用我的个人资料中的现有帐户和设置加载带有selenium的Chrome浏览器 我可以使用ChromeOptions来设置userdatadir和profile目录。这会像我想要的那样在浏览器中加载我的个人资料,但是浏览器会挂起60秒并超时,而无需通过任何更多的自动化。
如果我没有使用用户数据目录和配置文件设置,它可以正常使用但不使用我的个人资料。
我所做的阅读指出,一次打开的浏览器不能同一个配置文件,因此我确保在运行程序时没有打开任何内容。即使没有其他浏览器打开,它仍会挂起60秒。

let!(:user) { create(:user) }

context 'user is logged in' do
  before { sign_in user }

  it 'allows some thing' do
    # some expectation....
  end
end

它始终挂在GoToUrl上。我不知道还有什么可以尝试的。

2 个答案:

答案 0 :(得分:2)

根据您的代码试用版,您尝​​试加载默认 Chrome个人资料,这将作为最佳做法 >默认Chrome个人资料可能包含以下任一项:

  • 扩展
  • 书签
  • 浏览历史记录

因此,默认 Chrome个人资料可能与您测试规范不符,并且可能会在加载时引发异常。因此,您应始终使用自定义 Chrome个人资料,如下所示。

创建打开新的 Chrome个人资料,您需要按照以下步骤操作:

  • 打开 Chrome 浏览器,点击侧面菜单,然后点击网址 {{设置 1}}打开。
  • 部分,点击弹出窗口的管理其他人
  • 点击添加人,提供人名,选择图标,保留项目为此创建桌面快捷方式用户选中并单击 ADD 按钮。
  • 您的新个人资料已创建。
  • 新配置文件的快照 SeLeNiUm

SeLeNiUm

  • 现在,桌面图标将创建为 SeLeNiUm - Chrome
  • 从桌面图标 SeLeNiUm - Chrome 的属性中获取配置文件目录的名称。例如 - profile-directory ="个人资料2"

profile-directory

  • 获取系统中 profile-directory 的绝对路径,如下所示:

    chrome://settings/
  • 现在使用C:\\Users\\Thranor\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2 方法通过 ChromeOptions 的实例传递 profile-directory 的值以及用户数据 - dir 如下:

    AddArgument
  • 执行您的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 Chrome配置文件初始化为 SeLeNiUm

SeLeNiUm

答案 1 :(得分:1)

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

我的 PHP 代码:

char