在剧作家测试中添加Cookie

问题描述

无论我做什么,都会收到错误(X.cookies不是函数,或者X.addCookies不是函数)。我尝试使用上下文page.context。 browserContext等,并且总是以相同的方式结束(好的,page.context和browserContext是未定义的,因此错误有所不同)。

上下文:

  • 编剧版本:1.4.2
  • 操作系统:Ubuntu 20.4
  • Node.js版本:10.15.1
  • 浏览器:铬

代码

beforeEach(async function fn() {
this.timeout(20000);
browser = await chromium.launch({ headless: false });

const context = await browser.newContext();
page = await context.newPage();

await page
  .goto("http://localhost:4200/#/login",{
    waitUntil: "networkidle0",})
  .catch(() => {});

});

并处于测试状态:

      // await context.addCookies([
  //   { name: "csrftoken",value: cookietoken,path: "/" },//   { name: "sessionid",value: cookieSession,// ]);
  // await context.cookies();

解决方法

为了使用 playwright 设置 cookie,您需要同时添加 pathdomainurl。参见addCookies docs

中的注释代码
**browserContext.addCookies(cookies)**

cookies <Array<Object>>
name <string>
value <string>
url <string> either url or domain / path are required. Optional. // ***** NOTE *****
domain <string> either url or domain / path are required Optional. // ***** NOTE *****
path <string> either url or domain / path are required Optional. // ***** NOTE *****
expires <number> Unix time in seconds. Optional.
httpOnly <boolean> Optional.
secure <boolean> Optional.
sameSite <"Strict"|"Lax"|"None"> Optional.

returns: <Promise<void>>

这与 standard behavior 的行为不同,其中域是可选的。

,

const上下文仅在beforeEach方法内部设置,在测试中不可用。

将其定义为全局变量