0

I am writing test using selenium, java, chrome.

How can I turn off "dns over https" in chrome settings?

I need it because my intranet DNS have different data than internet ones.

I've tried to add following options.

    WebDriverManager.chromedriver().setup(); 
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--start-maximized");
    options.addArguments("ignore-certificate-errors");
    options.addArguments("--disable-async-dns");
    options.addArguments("--dns-prefetch-disable");
    options.addArguments("--disable-web-security");
    ChromeDriver driver = new ChromeDriver(options);

It didn't help. I've even tried to change options by clicking in settings

    driver.get("chrome://settings/security");
    String disableDNSOverHttpsButton = "/html/body/settings-ui//div[2]/settings-main//settings-basic-page//div[1]/settings-section[4]/settings-privacy-page//settings-animated-pages/settings-subpage/settings-security-page//settings-secure-dns//settings-toggle-button//div/cr-toggle";
    wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(disableDNSOverHttpsButton)));
    driver.findElement(By.xpath(disableDNSOverHttpsButton)).click();

There is response "org.openqa.selenium.NoSuchElementException: "

Marcin M
  • 13
  • 4

2 Answers2

1
local_state = {
    "dns_over_https.mode": "off",
    "dns_over_https.templates": "",
}

 

options.add_experimental_option("localState", local_state)
amox
  • 156
  • 1
  • 10
  • 2
    Thanks a lot. Finally I wrote it this way: `WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); Map localState = new HashMap(); localState.put("dns_over_https.mode", "off"); localState.put("dns_over_https.templates", ""); options.setExperimentalOption("localState", localState) ; ChromeDriver driver = new ChromeDriver(options);` – Marcin M Nov 23 '21 at 07:14
1

The solution is to use setExperimentalOption.

    WebDriverManager.chromedriver().setup(); 
    ChromeOptions options = new ChromeOptions();
    Map<String, Object> localState = new HashMap<String, Object>();
    localState.put("dns_over_https.mode", "off");
    localState.put("dns_over_https.templates", "");
    options.setExperimentalOption("localState", localState) ;
    ChromeDriver driver = new ChromeDriver(options);
Marcin M
  • 13
  • 4