ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

docker-python-chromedriver 二次开发完整指南:基于模板定制你自己的 Selenium 测试镜像

docker-python-chromedriver 二次开发完整指南:基于模板定制你自己的 Selenium 测试镜像 docker-python-chromedriver 二次开发完整指南基于模板定制你自己的 Selenium 测试镜像【免费下载链接】docker-python-chromedriverDockerfile for running Python Selenium in headless Chrome (Python 2.7 / 3.6 / 3.7 / 3.8 / Alpine based Python / Chromedriver / Selenium / Xvfb included in different versions)项目地址: https://gitcode.com/gh_mirrors/do/docker-python-chromedriverdocker-python-chromedriver 是一套专为 Python Selenium 自动化测试打造的 Docker 镜像方案它在官方 Python 镜像基础上预装 Google Chrome 与 Chromedriver让你开箱即用地获得一个完整的 Selenium 测试镜像。无论你是刚入门 UI 自动化测试的新手还是要维护多条测试流水线的工程师这份二次开发完整指南都能帮你基于模板快速定制出属于自己的 Selenium 测试镜像从此告别重复配置环境的烦恼。什么是 docker-python-chromedriver开箱即用的 Selenium 测试镜像简单来说docker-python-chromedriver 把「搭建 Selenium 测试环境」这件事做成了标准化镜像。以往你在自己电脑上跑 Selenium 测试需要依次安装 Python、Chrome 浏览器、Chromedriver还要处理版本不匹配的问题而现在只需拉取一个镜像测试环境即刻就绪。一个典型的镜像内包含以下组件✅ PythonDebian 或 Alpine 基础镜像✅ Google Chrome / Chromium 浏览器✅ Chromedriver 驱动✅ Selenium 库-selenium后缀版本已预装✅ Xvfb 虚拟显示器部分旧版本项目还自带一份可运行的测试脚本 test_script.py用 unittest 编写了两个真实点击用例非常适合用来快速验证镜像是否正常工作。镜像家族全览Debian 与 Alpine 两大系列怎么选项目按基础系统分成两大主线分别位于 py-debian 与 py-alpine 目录另有 deprecated 目录存放已弃用的 Python 2.7 与 Xvfb 版本。对比项py-debianDebian 系列py-alpineAlpine 系列基础镜像python:3.xpython:3.x-alpine包管理器apt-getapk浏览器google-chrome-stablechromiumChromedriver官方下载 zip 后解压安装直接安装 chromium-chromedriver镜像体积较大更小容器内 Shellbashsh选型建议追求与官方 Chrome 行为完全一致、调试方便选 Debian 系列追求镜像体积小、拉取快选 Alpine 系列。目前仍在维护的版本覆盖 Python 3.6 到 3.11每个版本都有「纯净版」和「预装 Selenium 版」两种标签系列可用标签示例Debian 基础版3.9、latest、3.10Debian Selenium3.9-selenium、3.10-seleniumAlpine 基础版3.9-alpine、3.10-alpineAlpine Selenium3.9-alpine-selenium、3.10-alpine-selenium模板化设计原理一次修改全家桶同步更新这个项目最值得学习的设计就是「模板 渲染脚本」的二次开发模式。你不需要为 3.6 到 3.11 每个版本分别维护 Dockerfile只需维护两个模板文件Dockerfile.template纯净版模板Dockerfile-selenium.template预装 Selenium 的模板模板中只有一处差异化的占位符%%PYTHON_VERSION%%渲染时会被替换成具体的版本号。例如 Debian 模板的核心逻辑是添加 Google Chrome 官方源并安装google-chrome-stable下载最新版 Chromedriver 并解压到/usr/local/bin/设置ENV DISPLAY:99避免无头模式崩溃而执行替换的脚本就是 render.sh它用sed命令把%%PYTHON_VERSION%%依次替换为 3.6 ~ 3.11循环生成所有版本的 Dockerfile。Alpine 系列同样有一套模板与脚本逻辑类似但使用apk add chromium chromium-chromedriver一行搞定浏览器与驱动。这就是整个项目「一次修改、全版本同步更新」的核心秘密。二次开发完整步骤三步定制自己的 Selenium 测试镜像下面以 Debian 系列为例演示完整的定制流程。第一步克隆项目源码git clone https://gitcode.com/gh_mirrors/do/docker-python-chromedriver cd docker-python-chromedriver第二步修改模板文件进入py-debian目录编辑 Dockerfile.template。比如想给所有版本预装requests和pytest只需在模板末尾追加一行RUN pip install requests pytest所有 Python 版本的镜像都会同步包含这两个库。第三步一键渲染并构建cd py-debian bash render.sh脚本会自动为 3.6 ~ 3.11 生成或覆盖对应版本的 Dockerfile。之后挑选一个版本构建镜像即可docker build -t my-selenium:3.9 py-debian/3.9实战定制三个高频二次开发场景掌握了模板机制后很多定制都变得轻而易举更换 Chromedriver 下载源模板中wget的下载地址来自 Google 官方国内网络访问慢时可以改成镜像源地址一处修改、全版本生效。预装项目依赖在模板末尾追加RUN pip install xxx让团队所有成员使用完全一致的依赖环境消除「在我机器上能跑」的问题。️加入 Xvfb 支持参考已弃用的 py3.6-xvfb-selenium 写法在模板中安装xvfb并设置DBUS_SESSION_BUS_ADDRESS/dev/null即可复刻出带虚拟显示器的版本。用定制镜像跑通第一个 Selenium 测试构建好镜像后用挂载目录的方式进入容器直接运行项目自带的测试脚本docker run -it -w /usr/workspace -v $(pwd):/usr/workspace my-selenium:3.9 bash python test_script.py如果使用的是预装 Selenium 的版本如3.9-selenium无需任何安装步骤若是纯净版先执行pip install selenium即可。测试脚本通过这几行关键参数让 Chrome 以无头模式运行这也是容器化测试的标准写法chrome_options.add_argument(--no-sandbox) chrome_options.add_argument(--headless) chrome_options.add_argument(--disable-dev-shm-usage)运行成功后你会看到类似Ran 2 tests ... OK的输出说明镜像环境完全可用。常见问题与避坑指南最后总结几个新手最容易踩的坑帮你少走弯路⚠️注意 CPU 架构当前镜像仅支持 amd64x86-64平台在 Apple M1 等 arm64 机器上构建或运行会遇到问题建议在 x86 环境或模拟器中执行。⚠️容器内务必加--no-sandboxDocker 默认以 root 运行Chrome 沙箱会导致启动失败测试脚本中的几个参数不要随意删除。⚠️区分 bash 与 shDebian 系列容器用bash进入Alpine 系列只有sh两者命令不可混用。⚠️render.sh 的兼容性渲染脚本按 Mac OS 编写Windows 用户建议在 WSL 或 Linux 环境运行。通过本文的模板定制思路你不仅能快速打造专属的 Selenium 测试镜像还能把这个「模板 渲染」的设计模式迁移到自己的项目里让镜像维护从体力活变成一条命令的事。赶紧动手试试吧【免费下载链接】docker-python-chromedriverDockerfile for running Python Selenium in headless Chrome (Python 2.7 / 3.6 / 3.7 / 3.8 / Alpine based Python / Chromedriver / Selenium / Xvfb included in different versions)项目地址: https://gitcode.com/gh_mirrors/do/docker-python-chromedriver创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表