Centons7 docker 安装 playwright
我这是 pytest + playwright +allure 的
前提就是 allure 是在 已经在 docker 外 配置好了的
其他的 一些依赖,我会放在 requirements.txt 里,docker 会自己去安装
这是 Dockerfile 文件
# 使用 Ubuntu 20.04 作为基础镜像
FROM ubuntu:20.04# 设置时区(避免在安装过程中出现提示)
ENV TZ=UTC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 安装 Python 3.8 和 pip
RUN apt-get update && \apt-get install -y python3.8 python3-pip && \ln -sf /usr/bin/python3.8 /usr/bin/python3 && \ln -sf /usr/bin/python3.8 /usr/bin/python && \# 清理缓存以减小镜像大小rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 安装系统依赖(包括Playwright所需的系统库)
RUN apt-get update && \apt-get install -y --no-install-recommends \curl \wget \unzip \# Playwright 系统依赖libnss3 \libnspr4 \libatk1.0-0 \libatk-bridge2.0-0 \libcups2 \libdrm2 \libdbus-1-3 \libxcb1 \libxdamage1 \libxext6 \libxfixes3 \libxrandr2 \libxcomposite1 \libx11-xcb1 \libxkbcommon0 \libatspi2.0-0 \libgbm1 \libpango-1.0-0 \libcairo2 \libasound2 \# 中文字体支持(根据需要可选)fonts-wqy-microhei \fonts-wqy-zenhei \# 其他有用的工具vim \git \&& rm -rf /var/lib/apt/lists/*# 将当前目录下的requirements.txt文件复制到容器的/app目录下
COPY requirements.txt .# 使用阿里云PyPI镜像安装Python依赖包,并避免缓存以减小镜像大小
RUN pip3 install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/# 安装allure-pytest适配器(正确的包名)
RUN pip3 install --no-cache-dir allure-pytest -i https://mirrors.aliyun.com/pypi/simple/# 安装Playwright并仅安装Chromium浏览器
RUN playwright install --with-deps chromium# 设置环境变量,确保Playwright在无头模式下运行(适用于大多数Docker环境)
ENV PLAYWRIGHT_HEADLESS=true# 设置容器默认的入口点为bash
ENTRYPOINT ["/bin/bash"]# 创建并复制验证脚本
COPY playwright_validation.py /app/playwright_validation.py# 设置一个健康检查(可选)
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \CMD python3 /app/playwright_validation.py || exit 1# 在构建的最后一步运行验证
RUN python3 /app/playwright_validation.py
(base) [webApp@centos7-base-images north_asia_project]$
然后
docker build -t playwright-pytest-env .
运行
docker run -it --rm -v /test_workspace:/app/tests -v /tmp/allure-results:/app/allure-results -w /app/tests --entrypoint=/usr/bin/python3 playwright-pytest-env -m pytest --alluredir=/app/allure-results test_case/test_webs/test_kcc/test_loctain_list.py -v
这是验证脚本
#!/usr/bin/env python3
"""
playwright_validation.py
用于验证 Docker 容器内 Playwright 及 Chromium 是否正常安装的脚本
"""from playwright.sync_api import sync_playwrightdef test_playwright_chromium():print("🔍 开始验证 Playwright 及 Chromium 浏览器...")try:with sync_playwright() as p:# 尝试启动 Chromium 浏览器print("1. 尝试启动 Chromium 浏览器(无头模式)...")browser = p.chromium.launch(headless=True)# 创建新页面print("2. 创建新页面...")page = browser.new_page()# 访问一个测试网站test_url = "https://example.com"print(f"3. 访问测试页面: {test_url}")page.goto(test_url)# 获取页面标题title = page.title()print(f"4. 成功获取页面标题: '{title}'")# 进行一个简单的截图操作print("5. 尝试截图操作...")screenshot_bytes = page.screenshot(full_page=True)# 关闭浏览器browser.close()print("✅ Playwright 及 Chromium 验证成功!")print(f" 页面标题: {title}")print(" 浏览器启动、页面导航、截图等功能均正常")return Trueexcept Exception as e:print(f"❌ 验证过程中出现异常: {str(e)}")return Falseif __name__ == "__main__":test_playwright_chromium()