docker+playwright+python+Jenkins跑web自动化

# Docker部署Jenkins以及安装Playwright跑Web自动化的那些坑

在使用Docker部署Jenkins以及安装Playwright进行Web自动化测试的过程中,我遇到了不少问题。这里分享一下我的经验和解决方法,希望能帮助到同样在探索这条技术路线的朋友们。

## 一、云主机上部署Docker的坑

### 1.1 默认安装Docker的问题
在云主机上部署Docker时,我发现默认安装的Docker版本可能会带来各种问题。例如,我最初安装的Docker版本较旧,导致后续操作中出现了不少奇怪的错误。(tips:由于我是在云主机上部署了一个docker,在这一步的时候就遇到很多的坑,如下:

云主机版本:)

默认去 install 安装docker,安装的docker版本是:

然后遇到各种奇奇怪怪的问题,这里就不在赘述。安装最新的docker,假如你之前存在一些镜像容器,可以按照图下去备份:

### 1.2 升级Docker的建议
如果之前已经安装了Docker,可以按照以下步骤进行升级:
- **备份现有镜像和容器**:在升级之前,建议备份现有的镜像和容器,以防止数据丢失。
- **升级Docker**:可以直接在现有基础上升级Docker,无需卸载。升级后的Docker版本应为最新稳定版。

### 1.3 推荐的系统和联网环境
根据我的经验,CentOS 7维护的Docker版本较旧,建议在OpenEuler或BCLinux系统上部署Docker。联网环境也很重要,联网可以避免很多麻烦。如果需要最新Docker版本,可以访问以下链接:[Docker Packages for CentOS](https://download.docker.com/linux/centos/7/x86_64/stable/Packages/)

## 二、拉取和使用Playwright镜像

### 2.1 官方文档的坑
根据Playwright官方文档安装的镜像可能存在一些问题。我建议使用以下特定版本的Playwright镜像:mcr.microsoft.com/playwright/python:v1.57.0-noble

目前我是根据官方文档安装的playwright镜像,但这个版本存在一些问题,建议使用如下图圈出来的红色部分的镜像:


### 2.2 创建并启动Playwright容器
以下是创建并启动Playwright容器的命令:
```bash
docker run -it --rm \
  --pids-limit=-1 \
  --cpus=4 \
  --memory=4g \
  --env PIP_NO_CACHE_DIR=1 \
  --env PIP_DEFAULT_TIMEOUT=120 \
  -v /root/code:/root \
  mcr.microsoft.com/playwright/python:v1.57.0-noble \
  sh -c "pip install --no-cache-dir --progress-bar off --retries 5 --timeout 120 playwright==1.57.0 ddddocr loguru -i https://mirrors.aliyun.com/pypi/simple/&&/bin/bash"

(这段命令是创建这个容器的时候遇到各种坑,ai问出来的可以执行,如果需要测试你的python脚本,可以将你的代码放到指定目录(可能会遇到权限问题,具体问题具体分析问ai
),会打印如下图片(创建这个容器用途主要是用来测试这个容器是否可用,这个镜像是否存在问题):)

## 三、部署Jenkins

###3.1  拉取Jenkins镜像

第一次拉取Jenkins镜像时,我没有指定版本,导致出现很多问题。后来我重新拉取了长期支持版本:docker pull jenkins:lts

###3.2 创建并启动Jenkins容器

docker run -d \
  --name zjjenkins \
  -p 8001:8080 \
  -p 50001:50000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /usr/bin/docker:/usr/bin/docker \
  -v /home/jenkins:/var/jenkins_home \
  -v /etc/localtime:/etc/localtime:ro \
  jenkins/jenkins:lts

###3.3 权限问题的解决

# 以root用户进入容器
docker exec -u root -it zjjenkins bash

# 在容器内修改权限
chmod 755 /usr/bin/docker

# 退出容器
exit

## 四、Jenkins流水线配置

###4.1 创建流水线任务

在Jenkins中创建流水线任务,命名为test

###4.2 配置流水线脚本

pipeline {
   agent { 
      docker { 
         image 'mcr.microsoft.com/playwright/python:v1.57.0-noble'
         args '-v ${WORKSPACE}:/workspace -w /workspace --user root'
      } 
   }

   stages {
      stage('e2e-tests') {
         steps {
            sh '''
               # 安装依赖
               pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

               # 修正包名(原文有拼写错误)
               pip uninstall -y pytest-playwright || true

               # 安装allure-pytest
               pip install allure-pytest -i https://pypi.tuna.tsinghua.edu.cn/simple/

               # 关键修改:使用 python -m pytest 而不是 pytest
               python -m pytest testcases/ -v -s
            '''
         }
      }
   }
}

###4.3 测试失败的处理

如果测试用例中有断言失败的情况,Pipeline任务会失败。如果希望测试失败时Pipeline不失败,可以使用pytest--tb=no-x选项。

## 五、生成测试报告

最后一步是在Jenkins中生成测试报告,具体操作可以根据项目的需要进行配置。

Read more

《并查集:算法中的高效集合操作利器》:一文带你掌握并查集数据结构

《并查集:算法中的高效集合操作利器》:一文带你掌握并查集数据结构

系列文章目录 文章目录 * 系列文章目录 * 一、认识并查集 * 1.并查集的定义 * 2.基本概念 * 2.1.集合的表示 * 2.2.合并操作 * 2.3.查询操作 * 3.基本操作 * 3.1初始化 * 3.2.查找 * 3.3.合并 * 4.优化技巧 * 4.1.路径压缩 * 4.2.按秩合并 * 5.代码完整实例 * 6.应用场景 * 6.1.图的连通性 * 6.2.社交网络分析 * 6.3.动态连通性问题 * 7.

By Ne0inhk
AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南

AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南

AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南 该指南聚焦 Prompt 与 Pandas 结合的实践应用,先阐述二者结合的价值 —— 降低 Pandas 学习门槛、提升数据处理效率,接着梳理代码生成、解释、优化等 6 大核心应用场景及对应 Prompt 目标。随后详解高质量 Prompt 设计的五大原则,强调需精准描述数据结构、明确操作目标等要点。通过 5 个实战案例,从基础数据清洗到批量生成报表,展示 Prompt 设计、模型输出与结果验证全流程,并给出 8 个高频问题的解决方案。最后总结核心价值,提供扩展学习建议,助力读者掌握 “自然语言驱动数据处理” 能力,形成高效工作流。 人工智能专栏介绍     人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的

By Ne0inhk
Wi-Fi 破解原理与防御:用 Python + Scapy 抓取“握手包”并跑字典,硬核演示 WPA2 弱点

Wi-Fi 破解原理与防御:用 Python + Scapy 抓取“握手包”并跑字典,硬核演示 WPA2 弱点

🚨 前言:你家的 Wi-Fi 为什么不安全? WPA2 协议看似铜墙铁壁,但它有一个致命的设计逻辑缺陷: 设备(手机/电脑)连接路由器时,必须进行**“四次握手” (4-Way Handshake)** 来验证密码是否正确。 这个过程是公开广播的。 黑客只要在旁边静静地“听”到这四次握手的数据包,把它抓回家,就可以关起门来用字典疯狂尝试密码,直到计算出的哈希值与抓到的包匹配。 攻防逻辑示意图 (Mermaid): 1. 请求连接2. 发送随机数 Anonce3. 发送随机数 Snonce + MIC (关键)4. 确认 抓取握手包 跑字典/暴力破解 用户手机 路由器 AP 黑客 (监听模式) 本地电脑 得出明文密码 🛠️ 准备工作 1. 硬件:你需要一个支持监听模式 (Monitor

By Ne0inhk
企业微信自建应用实现接收消息和发送消息功能(python)

企业微信自建应用实现接收消息和发送消息功能(python)

# 这一周我不断的琢磨企业微信自建应用并且实现了自建应用的消息接收和发送功能 1.笔记,记录 第一步:打开企业微信后台 https://work.weixin.qq.com 1.1 如果没有企业可以在这里申请,如果有可以直接扫码登录 1.2 打开后台-应用管理-自建应用-创建应用——填写自建应用的logo,应用名称,应用介绍等信息。 1.3 获取自建应用的AgentId,Secret,以及我的企业-企业ID信息 第二步:初步测试发送消息功能(注意:将刚刚保存好的信息正确填入到相应的代码段) import json #用于处理json数据 import urllib.parse # 用于对URL进行解析和构建 import requests #用于发送HTTTP请求 # 企业ID agentid = # 应用ID # 应用Secret # 接收消息的用户 # 企业微信API的基础URL base = 'https://qyapi.

By Ne0inhk