繁体   English   中英

如何使用 Selenium 和 Java 在 Chrome 中禁用 cookie

[英]How to disable cookies in Chrome using Selenium and Java

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

WebDriver driver = getDriver();
driver.get("chrome://settings/content/cookies");
WebElement element = driver.findElement(By.id("labelWrapper"));

但仍然无法选择任何选项。 我收到一个错误,指出该元素不存在,但是当我使用开发人员工具时,我可以看到它在那里。

我在用

  • testCompile 组:“org.seleniumhq.selenium”,名称:“selenium-java”,版本:“3.141.59”
  • testCompile 组:“org.seleniumhq.selenium”,名称:“selenium-chrome-driver”,版本:“3.141.59”

先说解决办法

要在最近的Chrome浏览器上禁用 cookie,您需要setPreference()属性network.cookie.cookieBehavior如下:

  • 铬合金:

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

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

历史

要使用SeleniumChrome 浏览上下文中禁用 cookie,您可以使用Map对象将cookie 的default_content_setting_values配置为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/");

我找到了一个对我有用的解决方案:

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM