如何配置Selenium WebDriver忽略指定.js/.css文件加载(无需扩展)
不用外部扩展拦截指定JS文件的解决方案
嘿,我刚好碰到过和你一模一样的问题——依赖AdBlock扩展还要手动操作确实麻烦,其实ChromeDriver本身就支持通过**Chrome DevTools Protocol(CDP)**来拦截特定资源,完全不需要外部扩展!
下面是具体实现步骤和代码:
核心思路
利用CDP的Network.setRequestInterception功能,提前设置拦截规则,当浏览器请求到你不想加载的JS文件时,直接返回"取消加载"的指令,这样Selenium就不会等待它加载完成了。
完整代码示例
替换你原来的扩展相关代码,改成这样:
ChromeOptions option = new ChromeOptions(); Driver = new ChromeDriver(option); // 启用CDP网络拦截 Driver.ExecuteCdpCommand("Network.enable", new Dictionary<string, object>()); // 设置拦截规则:自定义匹配你要拦截的JS文件 var interceptionParams = new Dictionary<string, object> { {"patterns", new List<object> { new Dictionary<string, object> { {"urlPattern", "*slow-script.js*"}, // 替换成你要拦截的JS文件的URL特征 {"resourceType", "Script"}, // 指定拦截脚本类型 {"interceptionStage", "Request"} } } } }; Driver.ExecuteCdpCommand("Network.setRequestInterception", interceptionParams); // 监听拦截事件,对匹配的请求直接取消 Driver.ExecuteCdpCommand("Network.onRequestIntercepted", new Dictionary<string, object> { {"action", "cancel"} }); // 接下来正常操作浏览器 Driver.Manage().Window.Maximize(); Driver.Navigate().GoToUrl(myUrl);
自定义拦截规则的技巧
- 精确匹配:如果知道JS文件的完整URL,把
urlPattern改成"https://example.com/path/to/slow-script.js" - 模糊匹配:用通配符
*匹配包含特定字符串的URL,比如"*/unwanted-js/*" - 正则匹配:把
urlPattern改成正则表达式,比如"^https://.*\\.js$"(注意转义字符) - 拦截其他资源:如果需要拦截图片、CSS等,把
resourceType改成"Image"、"Stylesheet"等
注意事项
- 确保你的ChromeDriver版本和本地Chrome浏览器版本一致,否则CDP命令可能不兼容
- 拦截规则设置要在
Navigate().GoToUrl()之前完成,否则第一次加载页面时可能不会生效 - 如果需要拦截多个文件,可以在
patterns列表里添加多个规则对象
这样一来,那个拖慢速度的JS文件就会被直接拦截,Selenium不用再等它加载,整个自动化流程会快很多!
内容的提问来源于stack exchange,提问作者Striter Alfa




