最近我升级到最新版本的chrome [1],现在默认禁用第三方cookie。现在我的一个测试使用chromedriver [3]对抗selenium [2],因为它依赖于第三方cookie(Facebook)。
我想要更改的设置似乎位于JSON中的文件/path/to/profile/Default/Preferences
中,如下所示:
{
...
"profile" : {
...
"block_third_party_cookies": false,
...
}
...
}
我想配置chrome,以便在我的selenium会话中此设置为false。
我正在使用perl驱动程序库,它允许我传递将在会话创建期间使用的一些选项。
我尝试更改配置文件目录,以下内容出现在我的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)
我认为这种方法应该有效,但我只需要知道正确的参数名称。
更改/etc/chromium/master_preferences
[1] Chromium版本31.0.1650.63 Debian
[2] Selenium独立版2.25.0
[3] Chromedriver版本2.6.232917
答案 0 :(得分:0)
我找到的解决方案使用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"],
},
);