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

如何使用Testcafe与JavaScript检查指定cookie的存在及取值

TestCafe Cookie校验实现方案

完整实现代码

你可以直接参考下方的可运行代码调整适配你的测试站点:

import { Selector, ClientFunction, t } from 'testcafe';

// 方案1:基于你已有的ClientFunction改造,支持按名称获取指定cookie
const getCookieByName = ClientFunction((cookieName: string) => {
  const cookies = document.cookie.split('; ');
  for (const cookie of cookies) {
    const [name, value] = cookie.split('=');
    if (name === cookieName) {
      return decodeURIComponent(value);
    }
  }
  return null; // 不存在则返回null
});

// 你要校验的cookie名称和预期值,替换成你自己的
const TARGET_COOKIE_NAME = '你的目标cookie名称';
const EXPECTED_COOKIE_VALUE = '你预期的cookie值';

fixture`Cookie 授权校验测试`
  .page`你要测试的站点URL`;

test('校验同意授权后指定cookie是否符合预期', async () => {
  // 第一步:点击同意cookie授权按钮,替换成你站点的实际按钮选择器
  const acceptCookieBtn = Selector('.cookie-accept-btn'); // 示例选择器,自行修改
  await t
    .expect(acceptCookieBtn.exists).ok('Cookie授权弹窗未出现')
    .click(acceptCookieBtn)
    .wait(500); // 等待cookie写入完成,可根据站点实际情况调整或删除

  // 第二步:获取目标cookie
  const targetCookieVal = await getCookieByName(TARGET_COOKIE_NAME);

  // 第三步:校验两项要求
  await t
    // 校验cookie存在
    .expect(targetCookieVal).notEql(null, `指定Cookie ${TARGET_COOKIE_NAME} 不存在`)
    // 校验cookie取值符合预期
    .expect(targetCookieVal).eql(EXPECTED_COOKIE_VALUE, `指定Cookie ${TARGET_COOKIE_NAME} 取值不符合预期`);
});

更简便的方案:使用TestCafe内置Cookie API

如果你要校验的是HttpOnly类型的Cookie,document.cookie无法读取,可以直接用TestCafe原生提供的t.getCookies()方法,不需要自己写ClientFunction:

// 替换上面的getCookieByName调用部分即可
const targetCookies = await t.getCookies(TARGET_COOKIE_NAME);
const targetCookie = targetCookies[0];

await t
  .expect(targetCookie).ok(`指定Cookie ${TARGET_COOKIE_NAME} 不存在`)
  .expect(targetCookie.value).eql(EXPECTED_COOKIE_VALUE, `指定Cookie ${TARGET_COOKIE_NAME} 取值不符合预期`);

注意事项

  • 代码中的按钮选择器、站点URL、目标cookie名称和预期值都需要替换成你实际测试场景的对应值
  • 如果点击同意后Cookie是异步写入的,可以适当延长等待时间,或者加轮询判断Cookie是否存在的逻辑避免偶发失败
  • 原生t.getCookies()默认获取当前测试域名下的所有Cookie,如果需要跨域获取可以额外传配置参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:48:00