You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Playwright测试块中动态设置extraHTTPHeaders?

解决方案

步骤1:在ApiRequests类中添加获取Token的方法

先在apiRequests.js里新增获取Token的方法,用来发起GET请求拿到最新Token:

const { expect } = require('@playwright/test');

class ApiRequests {
    constructor(page) {
        this.page = page    
    }

    // 新增获取Token的方法,根据实际接口返回结构调整字段
    async getAuthToken() {
        const tokenResponse = await this.page.request.get('你的Token获取接口URL');
        expect(tokenResponse.status()).toBe(200);
        const tokenData = await tokenResponse.json();
        return tokenData.access_token; // 假设接口返回的Token字段为access_token
    }

    async postRequest(url, requestBody, statusCode) {
        const response = await this.page.request.post(url, {  
            data: requestBody
        }) 
        expect(response.status()).toBe(statusCode);
        return response;
    }
}

module.exports = { ApiRequests };

步骤2:修改测试用例,动态设置请求头

删掉原来的test.use块,在测试逻辑里先获取Token,再通过page.setExtraHTTPHeaders设置全局请求头:

const { test, expect } = require('@playwright/test');
const { ApiRequests } = require('../api/apiRequests.js');

test("My Test", async({ page }) => {
    const apiReq = new ApiRequests(page);
    
    // 1. 获取最新Token
    const token = await apiReq.getAuthToken();
    
    // 2. 设置全局请求头,替代原test.use的静态配置
    await page.setExtraHTTPHeaders({
        Authorization: `Bearer ${token}`
    });
    
    // 3. 发起POST请求,此时会自动带上Authorization头
    await apiReq.postRequest('apiURL', requestBody, 200);
});

说明

page.setExtraHTTPHeaders会为当前page实例的所有后续请求添加默认请求头,效果和test.use的全局配置一致,但实现了每次测试动态获取Token的需求。如果你的Token接口不需要依赖page上下文,也可以直接用test.request发起请求,但上述方案更贴合你现有代码结构。

内容的提问来源于stack exchange,提问作者Lank

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 18:53:12