当前位置: 首页 > news >正文

Python + Playwright:如何在Docker 容器运行测试?

Python + Playwright:如何在Docker 容器运行测试?

    • 前言
    • 一、简介
    • 二、环境准备
      • 1. 安装 Docker
        • Windows 用户
        • macOS 用户
        • Linux 用户(以 Ubuntu 为例)
      • 2. 启动 browserless 服务
        • 拉取 browserless 镜像
        • 启动 browserless 容器
        • 验证 browserless 是否启动成功
    • 三、创建自动化测试项目
      • 1. 创建项目目录
      • 2. 新建 `requirements.txt`
      • 3. 新建 `conftest.py`
      • 4. 新建 `pages/baidu_page.py`
      • 5. 新建 `test_baidu.py`
    • 四、编写 Dockerfile
    • 五、编写 Docker Compose 文件
    • 六、运行测试
    • 七、常见问题与排查
    • 八、目录结构参考
    • 结语

前言

  • 在自动化测试领域,Playwright 结合 Docker 容器化部署,可以极大提升测试环境的可移植性和一致性, browserless 项目则为浏览器的无头远程管理提供了极佳的解决方案。
  • 本文将手把手教你如何在 Docker 容器中,利用 Python+Playwright,结合 browserless远程浏览器服务,运行自动化测试用例。

一、简介

  • Docker:容器化技术,保证环境一致性。
    在这里插入图片描述

  • browserless:基于 Docker 的无头浏览器服务,支持 Playwright、Puppeteer 等远程连接。
    在这里插入图片描述


二、环境准备

1. 安装 Docker

Windows 用户
  1. 访问 Docker Desktop 官网 下载 Windows 版本安装包。
    在这里插入图片描述

  2. 双击安装包,按提示完成安装。

  3. 安装完成后,启动 Docker Desktop,确保右下角 Docker 图标为绿色(表示已启动)。

  4. 打开命令行(PowerShell 或 CMD),输入以下命令验证安装:

    docker --version
    

    如果能看到 Docker 版本号,说明安装成功。

macOS 用户
  1. 访问 Docker Desktop 官网 下载 macOS 版本安装包。

  2. 双击 .dmg 文件,将 Docker 拖入 Applications 文件夹。

  3. 启动 Docker Desktop,等待 Docker 图标变为绿色。

  4. 打开终端,输入:

    docker --version
    

    出现版本号即为安装成功。

Linux 用户(以 Ubuntu 为例)
  1. 打开终端,依次执行以下命令:

    sudo apt-get update
    sudo apt-get install -y ca-certificates curl gnupg
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  2. 验证安装:

    docker --version
    

    出现版本号即为安装成功。


2. 启动 browserless 服务

拉取 browserless 镜像

在命令行中执行:

docker pull browserless/chrome
启动 browserless 容器
docker run -d -p 3000:3000 --name browserless browserless/chrome
  • -d 表示后台运行
  • -p 3000:3000 将容器的 3000 端口映射到本机 3000 端口
  • --name browserless 给容器起个名字,方便后续管理
验证 browserless 是否启动成功

在浏览器中访问 http://localhost:3000
如果看到 browserless 的欢迎页面,说明服务已启动成功。


你的最新第三点“创建自动化测试项目(以百度为例)”的完整内容如下:


三、创建自动化测试项目

1. 创建项目目录

mkdir playwright-docker-demo
cd playwright-docker-demo
mkdir pages

2. 新建 requirements.txt

playwright
pytest

3. 新建 conftest.py

import pytest
from playwright.sync_api import sync_playwrightBROWSERLESS_WS_ENDPOINT = "ws://browserless:3000/playwright"@pytest.fixture(scope="session")
def browser():with sync_playwright() as p:browser = p.chromium.connect_over_cdp(BROWSERLESS_WS_ENDPOINT)yield browserbrowser.close()

4. 新建 pages/baidu_page.py

class BaiduPage:def __init__(self, page):self.page = pagedef goto(self):self.page.goto("https://www.baidu.com")def search(self, keyword):self.page.fill("input[name='wd']", keyword)self.page.keyboard.press("Enter")def has_result(self, text):self.page.wait_for_selector(f"text={text}")return text in self.page.content()

5. 新建 test_baidu.py

import pytest
from pages.baidu_page import BaiduPagedef test_baidu_search(browser):page = browser.new_page()baidu = BaiduPage(page)baidu.goto()baidu.search("Playwright")assert baidu.has_result("Playwright")page.close()

注意:browserless 是 Docker Compose 中的服务名,后文会详细说明。


四、编写 Dockerfile

在项目根目录新建 Dockerfile

FROM python:3.10-slimWORKDIR /appCOPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txtCOPY . .CMD ["pytest", "--maxfail=1", "--disable-warnings", "-v"]

五、编写 Docker Compose 文件

新建 docker-compose.yml

version: '3'
services:browserless:image: browserless/chromeports:- "3000:3000"environment:- MAX_CONCURRENT_SESSIONS=5- PREBOOT_CHROME=trueplaywright:build: .depends_on:- browserlessenvironment:- PYTHONUNBUFFERED=1# 保证 playwright 服务启动后再运行测试entrypoint: ["sh", "-c", "sleep 5 && pytest --maxfail=1 --disable-warnings -v"]

六、运行测试

在项目根目录下执行:

docker-compose up --build

你将看到 pytest 的输出,测试用例会通过 browserless 服务远程控制浏览器,完成自动化测试。


七、常见问题与排查

  1. 连接失败

    • 确认 browserless 服务已启动并监听 3000 端口。
    • 确认 Playwright 连接的 ws 地址为 ws://browserless:3000/playwright(服务名+端口)。
  2. 依赖问题

    • Playwright 依赖的 Python 包已在 requirements.txt 中声明。
    • 若需更多依赖,可在 Dockerfile 中添加。
  3. 网络问题

    • Docker Compose 默认服务间可通过服务名互通,无需额外配置。

八、目录结构参考

playwright-docker-demo/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── conftest.py
├── test_baidu.py
└── pages/└── baidu_page.py

结语

通过本文的操作,你已经学会了如何利用Python+Playwright+Docker+browserless,在容器中高效运行自动化测试用例。这种方式不仅保证了环境一致性,还能轻松扩展到 CI/CD 流水线,助力自动化测试体系建设。


参考链接:

  • Playwright 官方文档
  • browserless GitHub
  • Docker 官方文档
http://www.xdnf.cn/news/160723.html

相关文章:

  • 0x27 A* + 0x28 IDA*
  • Adobe Photoshop(PS)2022 版安装与下载教程
  • 前端开发本地配置 HTTPS 全面详细教程
  • HackMyVM - Chromee靶机
  • 人工智能:入门阶段学习路径
  • per-task affinity 是什么?
  • 30天通过软考高项-第四天
  • Python循环语句-for循环(基础语法,range语句,临时变量作用域,嵌套应用)
  • 【计算机视觉】CV实战项目- DFace: 基于深度学习的高性能人脸识别
  • leetcode201.数字范围按位与
  • S参数的含义
  • 如何搭建和管理 FTP 服务器
  • 电商秒杀系统技术栈与难点解析 - Java架构师面试实战
  • 《Vue3学习手记5》
  • Redux和MobX有什么区别
  • 通过Golang实现快速实现MCP Server
  • 如何创建成员内部类数组
  • 小刚说C语言刷题——1109加密四位数
  • [笔记] MCPO搭建教程
  • 河南联通光猫超级管理员账号设置
  • 2025新版修复蛇年运势测试风水起名系统源码
  • VS BUG(6) LINK : fatal error LNK1158: 无法运行“rc.exe”
  • 自动化运维:从工具到实践的全面解析
  • C语言中转义字符的定义与使用详解
  • 基于ssm的仓库管理系统(源码+数据库)
  • 开源AI视频FramePack发布:6GB显卡本地运行
  • 大模型奖励建模新突破!Inference-Time Scaling for Generalist Reward Modeling
  • 用Python做有趣的AI项目1:用 TensorFlow 实现图像分类(识别猫、狗、汽车等)
  • CrewAI Community Version(二)——Agent
  • 解锁数据潜力的自监督学习技术