Как отключить куки в Chrome с помощью Selenium и Java - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь отключить куки в начале моего теста. Я пытался использовать параметры, но это не работает. Сейчас я использую

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

, но все еще не могу выбрать ни один из параметров. Я получаю сообщение об ошибке, что элемент не существует, но когда я использую инструменты разработчика, я вижу, что он там есть.

Я использую

  • testCompile group: "org.seleniumhq .selenium ", имя:" selenium- java ", версия:" 3.141.59 "
  • testCompile group:" org.seleniumhq.selenium ", имя:" selenium- chrome -driver ", версия: "3.141.59"

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Я нашел решение, которое работает для меня:

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();
0 голосов
/ 28 января 2020

Первое решение

Чтобы отключить файлы cookie в последних Chrome браузерах, необходимо setPreference() атрибут network.cookie.cookieBehavior следующим образом:

  • Chrome:

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

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

История

Чтобы отключить файлы cookie в Chrome Контексте просмотра с использованием Selenium , вы можете использовать объект Map для настройки default_content_setting_values из файлов 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/");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...