无法访问Chrome设置:获取源码遇MalformedURLException问题求助
解决java.net.MalformedURLException: unknown protocol: chrome异常
问题原因
Java标准库的URL类仅支持http、https、ftp等通用网络协议,chrome://是Chrome浏览器的内部协议,不在其默认支持范围内,直接用URL类访问该协议地址会抛出协议不识别的异常。而且你完全没必要用这种方式获取页面源码——Selenium本身就提供了获取当前页面源码的API。
另外你的代码存在一处配置错误:设置ChromeDriver时误用了Firefox驱动的系统属性webdriver.gecko.driver,Chrome对应的属性应该是webdriver.chrome.driver。
修正后的代码
System.setProperty("webdriver.chrome.driver", "./driver/chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.manage().window().maximize(); driver.get("chrome://settings/passwords?search=contra"); // 直接使用Selenium提供的API获取页面源码 String sourceCode = driver.getPageSource(); System.out.println(sourceCode); // 使用完毕后关闭驱动 driver.quit();
额外注意事项
- Chrome的密码设置页面属于浏览器内部安全页面,保存的密码不会直接暴露在页面源码中(出于安全保护),如果你的目标是获取浏览器存储的密码,需要通过读取Chrome密码存储文件并解密的方式实现,这涉及到系统权限和加密算法处理。
- 操作内部页面时建议添加显式等待,确保页面加载完成后再获取源码:
WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.presenceOfElementLocated(By.tagName("body")));
内容的提问来源于stack exchange,提问作者Shreker
相关产品推荐
相关产品推荐

