运行Selenium WebDriver遇弹窗:Windows恶意软件清除工具重置Chrome设置
嘿,Kunal,咱们来搞定你运行Selenium代码时碰到的这个烦人的提示!这个问题通常要么是ChromeDriver和Chrome版本不匹配,要么是系统的恶意软件扫描工具误把Selenium操控浏览器的操作当成了可疑修改——毕竟Selenium会调整浏览器的一些默认设置来完成自动化操作嘛。
下面给你几个实用的解决办法,按顺序试试:
先检查ChromeDriver和Chrome版本是否完全匹配
这是最常见的诱因!先打开Chrome,点击菜单→帮助→关于Google Chrome,查看你的浏览器版本(比如118.0.5993.70),然后下载对应大版本的ChromeDriver。注意:大版本必须完全一致,比如Chrome是118.x,ChromeDriver也得是118.x系列的。
另外,现在Selenium 4.6及以上版本已经支持自动管理驱动了,你完全可以不用手动写System.setProperty来指定驱动路径,代码可以简化成这样:package snaptrude; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class MyProject { public static void main(String[] args) { // 无需手动配置驱动路径,Selenium会自动下载匹配的ChromeDriver WebDriver driver = new ChromeDriver(); driver.get("https://你要访问的网址.com"); // 这里写你的自动化操作逻辑 // ... driver.quit(); // 记得关闭浏览器 } }这种方式能彻底避免版本不匹配的问题,建议你把Selenium依赖升级到最新版。
给ChromeDriver添加启动参数,规避重置提示
我们可以通过ChromeOptions给浏览器添加启动参数,告诉它不要触发重置设置的逻辑,同时减少安全工具的误判:package snaptrude; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.chrome.ChromeOptions; public class MyProject { public static void main(String[] args) { ChromeOptions options = new ChromeOptions(); // 禁用默认浏览器检查,避免触发重置提示 options.addArguments("--no-default-browser-check"); // 禁止重置默认应用设置 options.addArguments("--disable-default-apps"); // 禁用浏览器扩展(可选,减少干扰) options.addArguments("--disable-extensions"); // 如果不需要可视化界面,可以开启无头模式(可选) // options.addArguments("--headless=new"); WebDriver driver = new ChromeDriver(options); driver.get("https://你要访问的网址.com"); // 自动化操作逻辑 // ... driver.quit(); } }把ChromeDriver加入安全工具的排除列表
如果上面的方法都没用,那就是Windows恶意软件移除工具把ChromeDriver当成可疑程序了。你可以把ChromeDriver所在的文件夹添加到扫描排除项:- 打开Windows安全中心→病毒和威胁防护→管理设置→添加或删除排除项
- 选择“文件夹”,找到ChromeDriver存放的目录,添加进去
这样扫描工具就不会再干扰驱动的正常运行了。
如果还是不行,试试重启电脑,或者更新Windows恶意软件移除工具到最新版本——旧版本的扫描规则有时候会有莫名其妙的误判。
内容的提问来源于stack exchange,提问作者Kunal

