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
相关产品推荐
相关产品推荐

