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

一句话生成PCB?和AI聊聊天,就把板子画了!

一句话生成PCB?和AI聊聊天,就把板子画了!

在键盘上敲下一句“我要一个STM32的电机驱动板,带CAN总线”,几秒后,一张完整的原理图和PCB布局在你眼前展开——这不是科幻电影,而是AI给硬件工程师带来的真实震撼。 清晨的阳光洒进办公室,资深硬件工程师李工没有像往常一样直接打开Altium Designer。他对着电脑屏幕上的对话框,敲入了一行简单的需求描述:“设计一个基于ESP32的智能插座PCB,要求支持Wi-Fi控制、过载保护,尺寸尽量小巧。” 15分钟后,一份完整的原理图草案、经过初步优化的双层板布局,甚至是一份物料清单(BOM)初稿已经呈现在他面前。这不可思议的效率背后,正是AI驱动的PCB设计工具在重新定义电子设计的边界。 01 效率革命,从对话到电路板 如今的PCB设计领域正经历着一场静悄悄的革命。传统上,一块电路板从概念到图纸,需要工程师经历需求分析、器件选型、原理图绘制、布局布线等一系列复杂工序,耗时数天甚至数周。 AI工具的出现彻底改变了这一流程。这类工具的核心是经过海量电路数据和设计规则训练的大型语言模型,它们能理解自然语言描述的需求,自动完成从逻辑设计到物理实现的全流程或关键环节。 比如,当

By Ne0inhk
AI的提示词专栏:低资源模型(7B)Prompt 高质量输出策略

AI的提示词专栏:低资源模型(7B)Prompt 高质量输出策略

AI的提示词专栏:低资源模型(7B)Prompt 高质量输出策略 本文聚焦参数量约 70 亿的低资源模型,先分析其部署成本低但存在知识覆盖有限、逻辑连贯性不足等输出痛点,再从指令简化与目标聚焦、知识注入与上下文补充、示例引导与格式约束、逻辑引导与多轮交互四方面,提出核心 Prompt 优化策略。随后结合内容创作、编程、数据分析三大行业场景,通过优化前后 Prompt 对比、预期输出及技巧点分析提供实战案例,并给出准确性、完整性等效果评估指标与迭代优化等调优方法,还补充硬件配置、模型量化等环境适配建议,为低资源模型高效生成高质量内容提供全面指导。 人工智能专栏介绍     人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的 AI 知识库,把提示词设计、AI 创作、智能绘图等多个细分领域的知识整合起来。无论你是刚接触 AI 的新手,还是有一定基础想提升的人,都能在这里找到合适的内容。从最基础的工具操作方法,到背后深层的技术原理,专栏都有讲解,还搭配了实例教程和实战案例。这些内容能帮助学习者一步步搭建完整的

By Ne0inhk
在OpenClaw中构建专业AI角色

在OpenClaw中构建专业AI角色

这条信息在晚上 11:47 通过 WhatsApp 传来:“天气警报:明天早上看起来很糟糕——-8°C,伴有冰冻降雨,直到上午 10 点。您早上 8:30 的户外访问可能会不舒服。要我建议重新安排到下午吗?” 我不记得配置过那种程度的情境感知主动性。然后我查看了 IDENTITY.md。 多重角色设定(IDENTITY.md)Moltbot 中的文件作为您的 AI 智能体 | 由 Gemini 3 Pro 生成的图像 © 透明度:本文的 AI 辅助结构化研究。配置模式、角色设计和分析均来自我自己的实践。 在第一篇文章中,我探索了 SOUL.md——定义您的 AI 选择成为谁的文件。核心价值观。指导在模糊情况下做出决策的原则。

By Ne0inhk
人工智能:自然语言处理在客户服务领域的应用与实战

人工智能:自然语言处理在客户服务领域的应用与实战

人工智能:自然语言处理在客户服务领域的应用与实战 学习目标 💡 理解自然语言处理(NLP)在客户服务领域的应用场景和重要性 💡 掌握客户服务领域NLP应用的核心技术(如聊天机器人、意图识别、情感分析) 💡 学会使用前沿模型(如BERT、GPT-3)进行客户服务文本分析 💡 理解客户服务领域的特殊挑战(如实时性要求、多语言处理、用户体验) 💡 通过实战项目,开发一个客户服务聊天机器人应用 重点内容 * 客户服务领域NLP应用的主要场景 * 核心技术(聊天机器人、意图识别、情感分析) * 前沿模型(BERT、GPT-3)在客户服务领域的使用 * 客户服务领域的特殊挑战 * 实战项目:客户服务聊天机器人应用开发 一、客户服务领域NLP应用的主要场景 1.1 聊天机器人 1.1.1 聊天机器人的基本概念 聊天机器人是通过自然语言与用户进行交互的程序。在客户服务领域,聊天机器人的主要应用场景包括: * 客户服务:回答客户的问题(如“如何退货”、“商品价格”

By Ne0inhk