0

0

如何在 Selenium 中实现无头浏览器模式(不打开可视化窗口)

霞舞

霞舞

发布时间:2026-02-03 12:16:19

|

385人浏览过

|

来源于php中文网

原创

如何在 Selenium 中实现无头浏览器模式(不打开可视化窗口)

本文详解如何正确配置 selenium 的 chrome 和 firefox 浏览器驱动,启用 headless(无头)模式,避免弹出图形化浏览器窗口,适用于服务器环境、ci/cd 自动化及后台爬虫任务。

在使用 Selenium 进行自动化测试或网页抓取时,常需在无图形界面的环境中运行(如 Linux 服务器、Docker 容器或 GitHub Actions),此时必须启用 headless 模式——即浏览器后台运行、不渲染可视化窗口。但仅设置 options.headless = True 或遗漏关键参数,往往导致代码看似“无头”实则仍弹出窗口,根本原因在于:现代 Selenium 版本已弃用直接赋值 headless 属性的方式,而推荐使用 add_argument() 显式传入标准 CLI 参数,且不同浏览器驱动的选项模块与参数略有差异。

✅ 正确配置 Chrome 无头模式(推荐方式)

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

# 创建 ChromeOptions 实例(注意:不是 webdriver.ChromeOptions() 的旧写法)
chrome_opts = Options()
chrome_opts.add_argument('--headless')      # 核心:启用无头模式
chrome_opts.add_argument('--no-sandbox')     # 重要:绕过 sandbox 权限限制(Linux 必加)
chrome_opts.add_argument('--disable-dev-shm-usage')  # 避免共享内存问题(Docker/CI 常见)
chrome_opts.add_argument('--disable-gpu')    # 可选:禁用 GPU 加速(提升稳定性)

# 启动浏览器(确保 chromedriver 在 PATH 中,或指定 executable_path)
browser = webdriver.Chrome(options=chrome_opts)
browser.get("https://www.youtube.com")
print("Title:", browser.title)  # 验证页面成功加载
browser.quit()
⚠️ 注意事项:--no-sandbox 和 --disable-dev-shm-usage 在容器或无特权环境中必不可少,否则可能报错 Failed to move to new namespace 或 DevToolsActivePort file doesn't exist;chrome_opts.headless = True 在新版 Selenium(v4.0+)中已失效,必须使用 add_argument('--headless');若提示 chromedriver 找不到,请安装对应 Chrome 版本的 ChromeDriver,或使用 webdriver-manager 自动管理:pip install webdriver-managerfrom selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager service = Service(ChromeDriverManager().install()) browser = webdriver.Chrome(service=service, options=chrome_opts)

✅ 正确配置 Firefox 无头模式

Firefox 使用独立的 Options 类,路径为 selenium.webdriver.firefox.options.Options:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

firefox_opts = Options()
firefox_opts.add_argument('--headless')  # 同样使用字符串参数
firefox_opts.add_argument('--width=1920')  # 可选:设置视口尺寸(避免响应式布局异常)
firefox_opts.add_argument('--height=1080')

browser = webdriver.Firefox(options=firefox_opts)
browser.get("https://www.youtube.com")
print("Title:", browser.title)
browser.quit()

? 提示:Firefox 的 --headless 在较新版本(v56+)中完全稳定;若需更高兼容性,可搭配 geckodriver 并确保其在系统 PATH 中。

? 验证是否真正无头运行

最直接的方法是:在无桌面环境(如 Ubuntu Server SSH 终端)中执行脚本,观察是否出现浏览器窗口。也可通过进程检查:

DeepBrain
DeepBrain

AI视频生成工具,ChatGPT +生成式视频AI =你可以制作伟大的视频!

下载
ps aux | grep -i "chrome\|firefox"

若输出中包含 --headless 参数,即表示已正确启用。

✅ 总结

浏览器 正确导入模块 关键参数 必加安全参数
Chrome from selenium.webdriver.chrome.options import Options --headless, --no-sandbox, --disable-dev-shm-usage ✅ --no-sandbox, --disable-dev-shm-usage
Firefox from selenium.webdriver.firefox.options import Options --headless ❌ 通常无需额外参数

无头模式不仅是“隐藏窗口”,更是保障自动化脚本跨环境稳定运行的关键实践。务必摒弃 option.headless = True 等过时写法,统一采用 add_argument() 注入标准 CLI 参数,并根据部署环境补充必要安全选项。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

869

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

756

2023.11.06

github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

1373

2026.01.21

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

258

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

501

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

405

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

444

2024.04.08

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1436

2023.06.21

c语言中/相关合集
c语言中/相关合集

本专题整合了c语言中/的用法、含义解释。阅读专题下面的文章了解更多详细内容。

0

2026.02.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 8.4万人学习

Git 教程
Git 教程

共21课时 | 3.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号