You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Python Chrome webdriver非Headless模式下如何仅禁用CSS

Chrome Webdriver非Headless模式禁用CSS的可行方案

原有配置失效的原因

  • managed_default_content_settings属于企业策略托管配置键,本地非托管启动的Chrome实例默认不会优先读取该配置
  • Selenium 4+版本已弃用webdriver.Chrome()的chrome_options传参写法,原有代码传入的配置实际上未被加载

方案一:修正原有prefs配置

替换原有代码为以下写法,无需额外拦截逻辑即可生效:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
# 值为2代表禁止加载CSS
prefs = {
    "profile.default_content_settings.css": 2,
    "profile.managed_default_content_settings.css": 2
}
chrome_options.add_experimental_option("prefs", prefs)
# 关闭扩展避免覆盖自定义配置
chrome_options.add_argument("--disable-extensions")
# Selenium 4+必须使用options关键字传参,旧版chrome_options参数已失效
driver = webdriver.Chrome(options=chrome_options)

方案二:CDP协议拦截CSS请求(版本兼容性更强)

该方法不受Chrome策略变动影响,跨版本稳定性更高,非Headless模式完全可用:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
driver = webdriver.Chrome(options=chrome_options)

# 拦截所有外部CSS文件请求
driver.execute_cdp_cmd("Network.setBlockedURLs", {"urls": ["*.css", "*.css?*"]})
driver.execute_cdp_cmd("Network.enable", {})

可选:完全禁用所有内联/行内样式

上述配置仅会屏蔽外部CSS文件,如果需要连页面内的<style>标签、元素自带的style属性也一并禁用,可在DOM加载完成后执行如下JS:

driver.execute_script("""
document.querySelectorAll('style').forEach(el => el.remove());
document.querySelectorAll('*').forEach(el => el.removeAttribute('style'));
document.querySelectorAll('link[rel="stylesheet"]').forEach(el => el.remove());
""")

内容的提问来源于stack exchange,提问作者A..

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 09:15:04