playwright中处理cookie的几种实现方法

 更新时间:2026年01月25日 09:56:09   作者:勤奋的码农007  
Playwright 提供了多种处理 Cookie 的方法,支持 JavaScript/TypeScript、Python 等语言,下面就来介绍一下如何使用,感兴趣的可以了解一下

在 Playwright 中处理 Cookie 主要有以下几种方式,这些方法适用于所有语言绑定(JavaScript/TypeScript、Python、C#、Java):

1.添加 Cookie

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const context = await browser.newContext();
  
  // 添加单个 Cookie
  await context.addCookies([{
    name: 'token',
    value: 'abc123',
    url: 'https://example.com', // 或使用 domain/path
    domain: 'example.com',
    path: '/',
    expires: Math.floor(Date.now() / 1000) + 86400, // 过期时间(Unix 时间戳)
    httpOnly: true,
    secure: true,
    sameSite: 'Lax' // 'Strict' | 'Lax' | 'None'
  }]);
})();

2.获取 Cookie

// 获取所有 Cookie
const cookies = await context.cookies();
console.log(cookies);

// 获取特定 URL 的 Cookie
const siteCookies = await context.cookies(['https://example.com/login']);

3.清除 Cookie

// 清除所有 Cookie
await context.clearCookies();

// 清除特定 Cookie(通过名称)
await context.addCookies([]); // 添加空数组无法清除,需手动过滤重置

4.保存/加载 Cookie 状态(会话复用)

保存状态到文件

await context.storageState({ path: 'auth.json' });

文件内容包含 cookies 和 localStorage。

加载状态创建新上下文

const context = await browser.newContext({
  storageState: 'auth.json'
});

5.自动处理 Cookie(通过路由拦截)

await context.route('**/*', route => {
  const headers = route.request().headers();
  headers['Cookie'] = 'my_cookie=value'; // 手动添加 Cookie 到请求
  route.continue({ headers });
});

6.在页面中操作 Cookie(通过 evaluate)

const cookieValue = await page.evaluate(() => {
  return document.cookie; // 读取全部 Cookie
});

await page.evaluate(() => {
  document.cookie = 'user=john; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/';
});

关键注意事项

  1. 域名要求
    addCookies() 必须指定 url 或 domain+path,且当前上下文需在该域名下(可通过 page.goto() 先访问目标域)。

  2. HTTP Only Cookie
    无法通过 page.evaluate() 读取/修改 HTTP-Only Cookie,需使用 context.cookies()。

  3. 跨域限制
    Cookie 遵循同源策略,不可直接访问其他域的 Cookie。

  4. 浏览器上下文隔离
    每个 BrowserContext 有独立的 Cookie 存储,复用状态需使用 storageState。

典型场景示例:登录状态保持

// 首次登录并保存状态
const context = await browser.newContext();
await context.addInitScript(() => {
  localStorage.setItem('theme', 'dark');
});
await page.goto('https://example.com/login');
await page.fill('#username', 'user');
await page.fill('#password', 'pass');
await page.click('#login');
await context.storageState({ path: 'auth.json' });

// 后续测试直接加载状态
const newContext = await browser.newContext({ storageState: 'auth.json' });
const newPage = await newContext.newPage();
await newPage.goto('https://example.com/dashboard'); // 已登录状态

通过上述方法,可以灵活管理 Cookie,实现身份验证、会话保持等关键功能。

到此这篇关于playwright中处理cookie的几种实现方法的文章就介绍到这了,更多相关playwright处理cookie内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 微信小程序 云开发模糊查询实现解析

    微信小程序 云开发模糊查询实现解析

    这篇文章主要介绍了微信小程序 云开发模糊查询实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • JavaScript canvas实现水球加载动画

    JavaScript canvas实现水球加载动画

    这篇文章主要为大家详细介绍了JavaScript canvas实现水球加载动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • 使用JavaScript实现提取视频关键画面

    使用JavaScript实现提取视频关键画面

    在视频分享成为日常的今天,为视频挑选一个吸引人的封面往往能大大提高视频的点击率,本文我们就来探讨一下如何使用JavaScript实现提取视频关键画面吧
    2025-06-06
  • TypeScript中type关键字的使用

    TypeScript中type关键字的使用

    type是一个非常重要的关键字,用于定义类型别名,本文主要介绍了TypeScript中type关键字的使用,具有一定的参考价值,感兴趣的可以了解一下
    2025-06-06
  • jsPDF生成pdf后在网页展示实例

    jsPDF生成pdf后在网页展示实例

    本文为大家介绍下jsPDF生成pdf后如何在网页展示,下面有个不错示例,大家可以参考下
    2014-01-01
  • 一文搞懂 parseInt()函数异常行为

    一文搞懂 parseInt()函数异常行为

    这篇文章主要为大家介绍了一文搞懂 parseInt()函数异常行为示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • TypeScript中的类型声明文件的使用实战场景

    TypeScript中的类型声明文件的使用实战场景

    本文详细介绍了TypeScript中的类型声明文件(.d.ts),包括其作用、来源、如何自动生成、内置声明文件和外部类型声明文件的使用,通过实战场景,帮助读者彻底理解并掌握类型声明文件的使用,感兴趣的朋友跟随小编一起看看吧
    2026-02-02
  • JavaScript利用split函数按规定截取字符串(获取邮箱用户名)

    JavaScript利用split函数按规定截取字符串(获取邮箱用户名)

    这个其实就是利用了js的split函数,以@分割数组,一般用这个的地方不多,但这个思路应用的比较广泛。推荐大家学习。
    2009-12-12
  • 一个最简单的级联下拉菜单

    一个最简单的级联下拉菜单

    一个最简单的级联下拉菜单...
    2006-12-12
  • 原生js验证简洁注册登录页面

    原生js验证简洁注册登录页面

    这篇文章主要为大家详细介绍了原生js验证简洁美观注册登录页面的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12

最新评论