Playwright进阶指南 (5):拦截与模拟网络请求

在现代Web应用测试中,精准控制网络请求是提升测试效率和可靠性的重要因素。

Playwright 提供了强大的网络请求拦截与Mock能力,让你能够:

  • 拦截并修改 请求头、参数、URL

  • 模拟API响应 无需依赖真实后端

  • 构造异常场景 测试边缘情况

  • 加速测试执行 避免真实网络延迟

一、核心概念:路由与请求处理

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    context = browser.new_context()
    page = context.new_page()
    
    # 核心路由拦截方法
    def handle_route(route):
        if"api/v1/user"in route.request.url:
            # 在此处处理特定请求
            ...
        route.continue_()
    
    # 注册全局路由处理器
    page.route("**/*", handle_route)
    
    page.goto("https://your-app.com")

二、实战技巧:4种典型应用场景

场景1:修改请求参数(如添加认证Token)
def handle_route(route):
    headers = route.request.headers
    headers["Authorization"] = "Bearer mock_token"  # 注入模拟Token
    route.continue_(headers=headers)  # 修改后继续请求
场景2:拦截特定请求返回Mock数据
def mock_user_api(route):
    if route.request.url.endswith("/api/user"):
        # 构造JSON响应
        route.fulfill(
            status=200,
            content_type="application/json",
            body=json.dumps({"name": "测试用户", "id": 1001})
        )
    else:
        route.continue_()
场景3:模拟网络异常(测试错误处理)
def simulate_failure(route):
    if "payment-api" in route.request.url:
        # 返回500错误
        route.fulfill(status=500, body="Service Unavailable")
    else:
        route.co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值