如何使用webdriver for Chrome和FireFox JAVA禁用cookie

时间:2013-08-07 14:48:55

标签: cookies selenium webdriver

我希望启动浏览器(FF,CHROME)用于禁用cookie的测试,我试过这个:

           service =
                    new ChromeDriverService.Builder()
                            .usingDriverExecutable(new File("src/test/resources/chromedriver"))
                            .usingAnyFreePort().build();
            try {
                service.start();
            } catch (IOException e1) {
                e1.printStackTrace();
            }

            DesiredCapabilities capabilities = DesiredCapabilities.chrome();
            capabilities.setCapability("disable-restore-session-state", true);
            driver = new ChromeDriver(service, capabilities);

但这不起作用......

6 个答案:

答案 0 :(得分:9)

我刚刚获得Firefox的解决方案:

FirefoxProfile profile = new ProfilesIni().getProfile("default");
profile.setPreference("network.cookie.cookieBehavior", 2);
driver = new FirefoxDriver(profile);

但我不知道如何使用Chrome管理它。

答案 1 :(得分:4)

您可以按以下方式停用Chrome Cookie:

Map prefs = new HashMap();
prefs.put("profile.default_content_settings.cookies", 2);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOptions("prefs", prefs);
driver = new ChromeDriver(options);

答案 2 :(得分:1)

对于Chrome,请尝试以下操作:

DesiredCapabilities capabilities = DesiredCapabilities.chrome()
capabilities.setCapability("chrome.switches", Arrays.asList("--disable-local-storage"))
driver = new ChromeDriver(capabilities);

答案 3 :(得分:1)

对于以下作品的IE -

禁用cookie:

String command = "REG ADD \"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\ \" /v       1A10 /t REG_DWORD /d 0X3 /f";  
Runtime.getRuntime().exec(command);  

启用Cookie:

String command = "REG ADD \"HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\ \" /v       1A10 /t REG_DWORD /d 0X1 /f";
Runtime.getRuntime().exec(command); 

答案 4 :(得分:1)

您可以使用以下代码段来禁用Chrome和Firefox浏览器中的Cookie。如果您希望启用cookie,只需删除该功能即可。

Safari不支持任何实现此目的的能力。

对于Chrome:

DesiredCapabilities caps = new DesiredCapabilities();

ChromeOptions options = new ChromeOptions();
Map<String, Object> prefs = new HashMap<String, Object>();
Map<String, Object> profile = new HashMap<String, Object>();
Map<String, Object> contentSettings = new HashMap<String, Object>();

contentSettings.put("cookies",2);
profile.put("managed_default_content_settings",contentSettings);
prefs.put("profile",profile);
options.setExperimentalOption("prefs",prefs);
caps.setCapability(ChromeOptions.CAPABILITY,options);

WebDriver driver = new ChromeDriver(caps);

对于Firefox:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.cookie.cookieBehavior",2);
caps.setCapability(FirefoxDriver.PROFILE,profile);

答案 5 :(得分:1)

当前chrome版本的首选项略有变化。

我当前正在使用Chrome版本70。

在Java 11中。

var chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--incognito", "start-maximized"); // incognito and maximized.
var prefs = new HashMap<String, Object>();
prefs.put("profile.default_content_setting_values.cookies", 2);
chromeOptions.setExperimentalOption("prefs", prefs);

var webDriver = new ChromeDriver(chromeOptions);

根据official doc

DesiredCapabilities不推荐用于Java,因此只需使用ChromeOptions

引自文档。

  

偏好:字典

     

一本字典,每个条目都由字典的名称组成                           偏好及其价值。这些首选项仅适用于                           使用中的用户个人资料。请参阅Chrome浏览器中的“首选项”文件                           用户数据目录示例。

首选项文件为C:\ Users \用户名\ AppData \ Local \ Google \ Chrome \ User Data \ Default \ Preferences

我刚刚在Chrome中使用设置,看到了文件中发生的变化。