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好厉害,我好像什么都没干,ㄟ( ̄▽ ̄ㄟ)

相关推荐
qcx2310 小时前
【解构】DeepSeek V4 发布:技术报告深度解读 + 横向对比六大开源模型,我们的判断是……
人工智能·chatgpt·prompt
蓝色的音乐12 小时前
GPT Image 2 提示词怎么写?分享一个 400+ 案例 Prompt Gallery
gpt·prompt
迦南的迦 亚索的索12 小时前
AI_05_基于Prompt工程的金融行业项目
人工智能·金融·prompt
2501_940041741 天前
AI创建小游戏指令词
人工智能·游戏·prompt
2501_940041741 天前
投喂:AI生成各类游戏提示词
人工智能·游戏·prompt
renhongxia11 天前
计算机视觉实战:图像去噪模型训练与应用
开发语言·人工智能·机器学习·计算机视觉·prompt
IT届小白1 天前
无代码开发实战:用AI+Prompt工程从0到1构建排班记录App
人工智能·prompt
做个文艺程序员1 天前
用 Codex 写运维脚本(二)—— Prompt 工程:如何精准描述你的脚本需求
运维·prompt
Bug 挖掘机2 天前
一篇理清Prompt,Skill,MCP之间的区别
开发语言·软件测试·python·功能测试·测试开发·prompt·ai测试