【问题标题】:How to configure chromium settings in a selenium session如何在 selenium 会话中配置 chromium 设置
【发布时间】:2014-01-18 11:13:04
【问题描述】:

最近我升级到最新版本的 chromium[1],现在默认禁用第三方 cookie。现在,我使用 chromedriver[3] 对 selenium[2] 进行的一项测试失败了,因为它依赖于第三方 cookie (Facebook)。

我要更改的设置似乎位于 JSON 格式的文件 /path/to/profile/Default/Preferences 中,如下所示:

{
  ...
  "profile" : {
    ...
    "block_third_party_cookies": false,
    ...
  }
  ...
}

我想配置 chromium,以便在我的 selenium 会话中此设置为 false。

我尝试过但失败的事情:

我正在使用 perl 驱动程序库,它允许我传递一些将在会话创建期间使用的选项。

  1. 我尝试更改配置文件目录,然后我的 selenium 服务器输出中出现以下内容:

    14:33:53.312 INFO - Executing: [new session: {platform=ANY, acceptSslCerts=true, javascriptEnabled=true, browserName=chrome, proxy={proxyType=direct}, chrome.switches=--user-data-dir=/path/to/profile/..., version=}] at URL: /session)

    我认为这种方法应该可行,但我只需要知道正确的参数名称。

  2. 更改/etc/chromium/master_preferences中的设置

[1] Chromium 版本 31.0.1650.63 Debian
[2] Selenium 独立版 2.25.0
[3] Chromedriver 2.6.232917版

【问题讨论】:

    标签: perl google-chrome selenium debian chromium


    【解决方案1】:

    我找到的解决方案使用 chromeOptions.args 功能来设置配置文件。我创建了一个具有正确设置的配置文件模板。我使用此个人资料作为模板。

    在配置文件模板目录中有一个名为 Default/Preferences 的文件,其内容为:

    {
      "profile": {
        "block_third_party_cookies": false
      }
    }
    

    perl 测试文件类似于:

    use Selenium::Remote::Driver;
    use File::Temp 'tempdir';
    
    my $template_dir = '/path/to/template/dir/';
    my $dirname = tempdir(
      'chrome_user_data_XXXXXX',
      DIR     => '/tmp',
      CLEANUP => 1,
    );
    system(qq|cp -a $template_dir/* $dirname|) == 0
      or die("Could not copy $template_dir/* to $dirname");
    
    my $driver = Selenium::Remote::Driver->new(
      browser_name       => 'chrome',
      extra_capabilities => {
        args => ["user-data-dir=$dirname"],
      },
    );
    

    【讨论】:

      猜你喜欢
      • 2022-10-12
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2017-06-12
      • 2013-06-27
      • 2014-10-13
      • 1970-01-01
      • 2021-02-13
      相关资源
      最近更新 更多