专业服务 · 烟雨平生
Python笔记建站笔记资讯Docker运维
公告烟雨平生 —— 内容持续更新,欢迎指正。
首页 / Python笔记 / Docker版Selenium使用方法 | 烟雨平生

Docker版Selenium使用方法 | 烟雨平生

Python笔记 2026年10月02日 14:15 1731 字

docker版selenium使用方法。Selenium 包含 3 大组件:Selenium IDE、Selenium WebDriver、Selenium Grid。Selenium IDE 负责录制、回放脚本,模拟用户对页面的真实操作;Selenium WebDriver 提供用 Python 等语言控制浏览器的接口;Selenium Grid 则用于把自动化请求分发到不同浏览器节点。在 Linux 学习空间里,把这些组件放进 Docker,可以显著减少环境配置带来的麻烦。

为什么用 Docker 跑 Selenium

传统方式需要在本机或服务器安装浏览器、驱动和依赖,版本不一致时容易报错。Docker 镜像把浏览器、驱动和 Selenium 服务打包在一起,Python 脚本只需通过 WebDriver 协议连接容器即可。对没有桌面环境的 Linux 服务器尤其友好,也方便与 Hexo 构建、Python 定时任务放在同一台机器上,互不污染。

选择镜像:Standalone 还是 Grid

如果只是单机运行,用 standalone 镜像最省事,例如 `selenium/standalone-chrome` 或 `selenium/standalone-firefox`。它在一个容器里同时提供浏览器和 WebDriver 服务。

如果需要多浏览器、多节点并发,则使用 Selenium Grid:Hub 接收请求,Node 注册浏览器能力。可以用 Docker Compose 管理,避免手工维护多个容器。

启动一个 Selenium 容器

在 Linux 终端中执行:

“`bash

docker run -d –name selenium-chrome

-p 4444:4444

-p 7900:7900

–shm-size=”2g”

selenium/standalone-chrome

“`

`4444` 是 WebDriver 端口,Python 脚本连接它;`7900` 可用于观察容器内浏览器画面。`–shm-size` 用于给浏览器共享内存,减少 Chrome 在容器中崩溃的概率。

Python 中连接远程浏览器

安装 selenium 包后,用 Remote WebDriver 指向容器:

“`python

from selenium import webdriver

from selenium.webdriver.common.by import By

driver = webdriver.Remote(

command_executor=”localhost 的 4444 端口 /wd/hub”,

options=webdriver.ChromeOptions()

)

driver.get(“example.com(示例域名)”)

print(driver.title)

driver.quit()

“`

如果 Docker 运行在远程 Linux 服务器,把 `localhost` 换成服务器 IP;如果 Python 脚本也在同一 Docker 网络中,则用容器名或服务名。使用 Grid 时,连接地址同样是 Hub 的 `4444` 端口。

常见问题与使用建议

  • 容器反复重启:检查共享内存、内存限制和浏览器日志。
  • 连接被拒绝:确认端口映射、防火墙以及 `command_executor` 地址。
  • 元素定位失败:等待页面加载完成,使用显式等待,而不是固定 sleep。
  • 版本兼容:Python 的 selenium 包与镜像尽量固定版本组合,避免自动升级导致协议不匹配。
  • 文件下载:通过挂载卷或远程下载方式处理,不要把文件只留在容器内。

适合哪些场景

Docker 版 Selenium 适合 Python 爬虫与自动化测试、页面截图、链接检查、表单回归等任务。对于用 Hexo 维护的站点或 Linux 上的 Python 学习空间,可以定期用容器跑一遍页面检查,把环境搭建成本降到很低。核心思路是:浏览器和驱动交给 Docker,业务逻辑留在 Python 脚本中。