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

Playwright调用add_cookies报undefined读取TypeError如何解决

问题根因

报错是三个写法错误直接导致的:

  • @playwright/test 包根本没有导出browser_context、add_cookies这两个成员,你导入的这两个值本身就是undefined,读取属性必然抛错
  • Playwright 所有API都是JS标准驼峰命名,不存在下划线命名的add_cookies方法,正确方法名是addCookies,且该方法挂载在浏览器上下文实例上,不是可以直接调用的全局方法
  • 你传入的参数格式完全不符合API要求,addCookies要求传入带完整字段的cookie对象数组,不是简单字符串数组,同时你的代码连方法调用的闭合括号都没写全,本身就存在语法错误
修正方法
  • 删掉错误的导入项,context实例不需要单独导入,直接在test回调的入参里解构就能拿到
  • 把加cookie的逻辑放到页面跳转之前执行,否则首次页面请求带不上你设置的cookie
  • 按照API要求传入格式正确的cookie参数,补全语法缺失的括号
  • 不推荐用waitForTimeout做硬等待,优先用定位器的自动等待机制判断页面加载状态
修正后可运行代码
import { test, expect } from '@playwright/test';

test('test', async ({ page, context }) => {
  // 先设置cookie再跳转页面
  await context.addCookies([
    {
      name: "cookiename",
      value: "myvalue",
      url: 'https://myurl.com/'
      // 如果要匹配全站子域名,可以把url字段换成 domain: '.myurl.com'
      // 需要设置path、httpOnly、过期时间等属性直接在对象里加对应字段即可
    }
  ])

  await page.goto('https://myurl.com/');
  // 替换硬编码等待示例:等页面核心元素加载完成再继续后续操作
  // await page.locator('#page-core-element').waitFor();
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:27:23