如何使用Selenium和Java禁用Chrome中的Cookie

如何使用Selenium和Java禁用Chrome中的Cookie,java,selenium,google-chrome,cookies,selenium-chromedriver,Java,Selenium,Google Chrome,Cookies,Selenium Chromedriver,我正在尝试在测试开始时禁用Cookie。我尝试过使用选项,但不起作用。 现在我正在使用 WebDriver driver = getDriver(); driver.get("chrome://settings/content/cookies"); WebElement element = driver.findElement(By.id("labelWrapper")); 但仍然无法选择任何选项。我收到一个错误,该元素不存在,但当我使用开发人员工具时,我可以看到它存在 我正在使用 test

我正在尝试在测试开始时禁用Cookie。我尝试过使用选项,但不起作用。 现在我正在使用

WebDriver driver = getDriver();
driver.get("chrome://settings/content/cookies");
WebElement element = driver.findElement(By.id("labelWrapper"));
但仍然无法选择任何选项。我收到一个错误,该元素不存在,但当我使用开发人员工具时,我可以看到它存在

我正在使用

  • testCompile组:“org.seleniumhq.selenium”,名称:“seleniumjava”,版本:“3.141.59”
  • testCompile组:“org.seleniumhq.selenium”,名称:“seleniumhq驱动程序”,版本:“3.141.59”
首先是解决方案 要在最近的Chrome浏览器上禁用cookie,您需要
setPreference()
属性
network.cookie.cookieBehavior
,如下所示:

put("profile.default_content_setting_values.cookies", 2);
  • 铬:

    prefs.put("network.cookie.cookieBehavior", 2);
    
  • 火狐:

    profile.setPreference("network.cookie.cookieBehavior", 2);
    

历史 要使用禁用Chrome浏览上下文中的Cookie,您可以使用
Map
对象将Cookie
默认内容设置值配置为
2
,如下所示:

put("profile.default_content_setting_values.cookies", 2);
实际上,您的代码块将是:

System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
Map<String, Object> prefs = new HashMap<String, Object>();
// Pass the argument 1 to allow and 2 to block
prefs.put("profile.default_content_setting_values.cookies", 2);
prefs.put("network.cookie.cookieBehavior", 2);
prefs.put("profile.block_third_party_cookies", True);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("prefs", prefs);
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com/");
System.setProperty(“webdriver.chrome.driver”,“C:\\path\\to\\chromedriver.exe”);
Map prefs=新的HashMap();
//将参数1传递给allow,将参数2传递给block
prefs.put(“profile.default\u content\u setting\u values.cookies”,2);
prefs.put(“network.cookie.cookieBehavior”,2);
prefs.put(“profile.block\u第三方\u cookies”,True);
ChromeOptions选项=新的ChromeOptions();
选项。设置实验选项(“prefs”,prefs);
WebDriver=新的ChromeDriver(选项);
驱动程序。获取(“https://www.google.com/");

我找到了一个适合我的解决方案:

driver.get("chrome://settings/content/cookies");
WebElement root1 = driver.findElement(By.tagName("settings-ui"));
WebElement shadowRoot1 = expandRootElement(root1);
WebElement root2 = shadowRoot1.findElement(getByIdentifier("id=container"));
WebElement main = root2.findElement(getByIdentifier("id=main"));
WebElement shadowRoot3 = expandRootElement(main);
WebElement shadowRoot4 = shadowRoot3.findElement(getByIdentifier("class=showing-subpage"));
WebElement shadowRoot5 = expandRootElement(shadowRoot4);
WebElement shadowRoot6 = shadowRoot5.findElement(getByIdentifier("id=advancedPage"));
WebElement shadowRoot7 = shadowRoot6.findElement(By.tagName("settings-privacy-page"));
WebElement shadowRoot8 = expandRootElement(shadowRoot7);
WebElement shadowRoot9 = shadowRoot8.findElement(getByIdentifier("id=pages"));
WebElement shadowRoot10 = shadowRoot9.findElement(By.tagName("settings-subpage"));
WebElement shadowRoot11 = shadowRoot10.findElement(By.tagName("category-default-setting"));
WebElement shadowRoot12 = expandRootElement(shadowRoot11);
WebElement shadowRoot13 = shadowRoot12.findElement(By.id("toggle"));
shadowRoot13.click();

不,它不起作用。我试过了,但是当我开始测试和检查时,所有的cookie都被删除了available@BozhidarMarinov签出更新的答案并让我知道状态。同样的行为。Cookie未被禁用。@BozhidarMarinov签出更新的答案并告诉我状态。@DebanjanB我找到了解决方案。请检查一下