如何在selenium中通过https禁用dns



我正在使用selenium, java, chrome编写测试。

如何关闭http "dns在chrome设置?

我需要它,因为我的内网DNS和互联网DNS有不同的数据。

我已经尝试添加以下选项。

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

它没有帮助。我甚至试过通过点击设置

来改变选项
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();

有响应"org.openqa.selenium。NoSuchElementException:">

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

options.add_experimental_option("localState", local_state)

解决方法是使用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);

相关内容

  • 没有找到相关文章

最新更新