Perl 如何在selenium会话中配置chromium设置

Perl 如何在selenium会话中配置chromium设置,perl,google-chrome,selenium,debian,chromium,Perl,Google Chrome,Selenium,Debian,Chromium,最近我升级到了chromium[1]的最新版本,现在默认情况下禁用了第三方cookie。现在,我使用chromedriver[3]对selenium[2]进行的一项测试失败了,因为它依赖于第三方cookie Facebook 我要更改的设置似乎位于JSON中的文件/path/to/profile/Default/Preferences中,如下所示: { ... "profile" : { ... "block_third_party_cookies": false,

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

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

{
  ...
  "profile" : {
    ...
    "block_third_party_cookies": false,
    ...
  }
  ...
}
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"],
  },
);
我想配置chromium,以便在selenium会话中此设置为false

我尝试过但失败的事情: 我使用的是perl驱动程序库,它允许我传递一些将在会话创建期间使用的选项

我试图更改配置文件目录,但我的selenium服务器输出中出现以下内容:

14:33:53.312信息-执行:[新会话:{platform=ANY,acceptSslCerts=true,javascriptEnabled=true,browserName=chrome,proxy={proxyType=direct},chrome.switches=-user data dir=/path/to/profile/…,version=}]

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

更改/etc/chromium/master\u首选项中的设置

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

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

在概要文件模板目录中,有一个名为Default/Preferences的文件,其内容如下:

{
  "profile": {
    "block_third_party_cookies": false
  }
}
perl测试文件如下所示:

{
  ...
  "profile" : {
    ...
    "block_third_party_cookies": false,
    ...
  }
  ...
}
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"],
  },
);