【问题标题】:How to disable cookies in Chrome using Selenium and Java如何使用 Selenium 和 Java 在 Chrome 中禁用 cookie
【发布时间】:2020-05-13 01:38:07
【问题描述】:

我试图在测试开始时禁用 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”

【问题讨论】:

    标签: java selenium google-chrome cookies selenium-chromedriver


    【解决方案1】:

    先解决办法

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

    • 铬:

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

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

    历史

    要使用 SeleniumChrome 浏览上下文 中禁用 cookie,您可以使用 Map 对象将 cookiesdefault_content_setting_values 配置为 @987654328 @如下:

    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/");
    

    【讨论】:

    • 不,它不起作用。我试过了,但是当我开始测试和检查时,所有的 cookie 都可用
    • @BozhidarMarinov 查看更新的答案并告诉我状态。
    • 同样的行为。 Cookie 未被禁用。
    • @BozhidarMarinov 查看更新的答案并告诉我状态。
    【解决方案2】:

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

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

    【讨论】:

    • @DebanjanB 我找到了解决方案。请检查一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 2018-07-07
    • 2012-12-12
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多