AI念咒_浏览器测试自动化

一、OKR

O:初步熟悉Prompt,Playwaright,以及Claude code,知道如何利用三者做浏览器自动化测试

KR1:讲得出三者的概念和关系,以及应用场景

KR2:写个demo,你要测试一个网站(比如登录、搜索)

二、基本概念

|---------------|-------------|-------------------|
| 名称 | 概念 | 应用 |
| Prompt | 给AI的"需求文档" | 告诉ai你要什么,怎么写,什么格式 |
| Claude/Cursor | ai 编程助手 | 读prompt -> 生成代码 |
| Playwright | 自动化操作浏览器的工具 | 模拟真人点击、输入、截图、验证 |

三、demo

1、测试流程对比

传统做法:

  1. 打开 Playwright 文档
  2. 查 API 怎么写
  3. 自己敲代码
  4. 调试跑通

AI 辅助做法:

  1. 写一个清晰的 Prompt(描述要测什么,好 Prompt → 一次跑通,所以我的prompt也是ai写的(ง ˙o˙)ว)
  2. AI 直接生成可运行的代码
  3. 复制粘贴运行

2、步骤

2.1 用Claude code生成prompt

这里举例:我叫他帮我分析我的博客

用 Playwright (Python) 写一个自动化测试脚本,测试 CSDN 博客主页:

【测试目标】

【测试步骤】

  1. 打开浏览器,访问该博客主页

  2. 等待页面完全加载

  3. 断言页面标题包含 "CSDN"

  4. 验证博主昵称显示在页面上(获取并打印博主名字)

  5. 验证文章列表区域存在(class 或 id 包含 "article-list" 或类似)

  6. 获取第一篇文章的标题并打印

  7. 点击第一篇文章标题进入详情页

  8. 断言文章详情页加载成功(URL 变化或出现文章内容)

  9. 截图保存 blog_page.png

  10. 返回上一页,截图保存 blog_home.png

【技术要求】

  • 用 pytest 框架

  • 用 Playwright 同步 API

  • headless=False 方便观察

  • 使用 expect 进行断言

  • 适当使用 wait_for_load_state 等待页面稳定

  • 代码要完整可运行,包含 import

  • 添加注释说明每步在做什么

【输出格式】

  1. 完整 Python 代码(保存为 test_csdn_blog.py)

  2. 安装依赖的命令

  3. 运行命令

  4. 可能的坑和注意事项(比如 CSDN 可能有反爬、弹窗等)


复制上面的 Prompt 发给 Claude/Cursor,它会给你生成完整代码

2.2 Claude code编码

新建文件 → test_csdn_blog.py

python 复制代码
"""
  CSDN 博客自动化测试 - 修复版
  """
import re
from playwright.sync_api import sync_playwright


def test_csdn_blog():
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=False)
        page = browser.new_page(viewport={'width': 1280, 'height': 800})

        try:
            print("🚀 开始测试 CSDN 博客...")

            # 1. 访问博客主页
            page.goto("https://blog.csdn.net/m0_61472704?spm=1010.2135.3001.5343")
            page.wait_for_load_state("networkidle")

            # 关闭可能的弹窗
            page.keyboard.press("Escape")
            page.wait_for_timeout(1000)

            # 2. 验证标题
            assert "CSDN" in page.title(), f"标题不含CSDN,实际标题: {page.title()}"
            title = page.title()
            print(f"   ✅ 标题: {title}")

            # 3. 获取博主名(从标题提取,避开随机属性)
            author_name = title.split("-")[0].replace("*", "").strip()
            print(f"   ✅ 博主: {author_name}")

            # 4. 找文章列表(用更通用的选择器)
            # CSDN 文章通常有 article 标签或包含 article/details 的链接
            articles = page.locator("a[href*='/article/details/']")
            count = articles.count()
            print(f"   ✅ 找到 {count} 篇文章")

            if count == 0:
                raise Exception("未找到文章链接")

            # 5. 获取第一篇文章标题
            first_title = articles.nth(0).inner_text()
            print(f"   ✅ 第一篇文章: {first_title[:50]}...")

            # 6. 点击第一篇文章
            print("[6] 点击进入文章...")
            articles.nth(0).click()

            page.wait_for_load_state("networkidle")
            print(f"   ✅ 当前URL: {page.url}")

            # 7. 截图
            page.screenshot(path="blog_detail.png", full_page=True)
            print("   ✅ 截图已保存: blog_detail.png")

            # 8. 返回并截图首页
            page.go_back()
            page.wait_for_timeout(1000)
            page.screenshot(path="blog_home.png", full_page=True)

            print("\n✅ 测试全部通过!")
            print(f"   博主: {author_name}")
            print(f"   文章: {first_title}")

        except Exception as e:
            print(f"\n❌ 错误: {e}")
            page.screenshot(path="error.png")
            raise
        finally:
            browser.close()


if __name__ == "__main__":
    test_csdn_blog()

2.3 测试

bash 复制代码
# 安装pytest-playwright
pip install pytest-playwright
bash 复制代码
# 安装浏览器驱动
playwright install chromium

然后运行脚本就好了(python test_csdn_blog.py)

2.4 结果

呃呃呃呃.......AI好厉害,我好像什么都没干,ㄟ( ̄▽ ̄ㄟ)

相关推荐
zzz_23682 天前
AI Coding 的稳定性,不能只靠 Prompt:一次 Harness 工程化拆解
人工智能·prompt
小白说大模型2 天前
AI Agent 调试实战:从 Prompt 追踪到执行回放的系统化排障方法
人工智能·prompt
wangyue_msn_862 天前
Agent知识学习笔记——01 Prompt/Function call/记忆/上下文
笔记·学习·prompt
枫叶v.3 天前
Prompt Injection 防不住怎么办?从 Source-Sink 模型设计 Agent 安全边界
数据库·安全·prompt
奈斯先生Vector3 天前
解码 Midjourney V6 的精准控制力:从 customId 状态机制到 Web 端 Action 二次编辑工程全解析
前端·gpt·prompt·aigc·midjourney·ai编程·agi
xian_wwq3 天前
【学习笔记】从 Prompt 到 Loop,AI 工程化的四次跃迁-1/16
笔记·学习·prompt
杰瑞学AI3 天前
一个回答需要10分钟:飞书问答机器人踩坑实录——纯Agent自由检索,差点让我们的机器人“难产”
人工智能·机器人·prompt·transformer·飞书·ai-native
IT小盘3 天前
16-Prompt版本管理-从手工修改到可追踪配置系统
开发语言·人工智能·python·prompt
IT小盘3 天前
13-企业Prompt模板-角色任务约束与输出格式
java·前端·prompt
IT小盘4 天前
14-让大模型稳定输出JSON-Prompt约束与结构化输出
windows·json·prompt