如何在Selenium WebDriver ChromeDriver中禁用图片?代码失效求助
解决Selenium ChromeDriver无法禁用图片的问题
我之前也踩过这个坑!你的代码方向是对的,但Chrome的配置方式在新版本里有一些细节调整,而且直接用withCapabilities传递偏好设置有时候会被默认配置覆盖,导致图片还是会加载。下面给你两个可靠的解决方案:
方案一:使用ChromeOptions设置用户偏好(推荐)
现在Selenium更推荐用ChromeOptions来管理Chrome的启动配置,这样能更稳定地应用你的偏好设置。修改后的代码如下:
const { Builder } = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); require('chromedriver'); (async function disableImages() { // 创建Chrome选项实例 const chromeOptions = new chrome.Options(); // 设置禁用图片的用户偏好:2代表阻止加载 chromeOptions.setUserPreferences({ 'profile.default_content_settings.images': 2 }); let driver = await new Builder() .forBrowser('chrome') .setChromeOptions(chromeOptions) // 用setChromeOptions传递配置 .build(); try { await driver.get('https://www.google.com/search?tbm=isch&q=batman'); // 等待几秒验证效果 await driver.sleep(5000); } catch (err) { console.error('出错了:', err); } finally { await driver.quit(); } })();
方案二:添加命令行启动参数(双重保险)
如果方案一还是没生效,可以试试直接给Chrome添加命令行参数,强制禁用图片渲染:
const { Builder } = require('selenium-webdriver'); const chrome = require('selenium-webdriver/chrome'); require('chromedriver'); (async function disableImages() { const chromeOptions = new chrome.Options(); // 方案一的偏好设置 + 命令行参数双重保障 chromeOptions.setUserPreferences({ 'profile.default_content_settings.images': 2 }); chromeOptions.addArguments('--blink-settings=imagesEnabled=false'); let driver = await new Builder() .forBrowser('chrome') .setChromeOptions(chromeOptions) .build(); try { await driver.get('https://www.google.com/search?tbm=isch&q=batman'); await driver.sleep(5000); } catch (err) { console.error('出错了:', err); } finally { await driver.quit(); } })();
为什么你的原代码没生效?
- 原代码直接用
withCapabilities传递配置,在Selenium 4+版本中,这种方式的优先级低于ChromeOptions,容易被Chrome的默认配置覆盖。 - 部分旧文档里的
default_content_setting_values.images路径已经过时,现在Chrome更认可profile.default_content_settings.images这个路径。
内容的提问来源于stack exchange,提问作者Native Coder
相关产品推荐
相关产品推荐

