2

无论我做什么,我都会收到错误(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, path: "/" },
  // ]);
  // await context.cookies();
4

3 回答 3

1

获得上下文后,您应该可以将其用作下面的示例: await context.addCookies([{name:"csrftoken", value: "mytokenvalue123", url: "your.application.url"}]);

于 2021-09-22T14:19:47.600 回答
0

要使用 设置 cookie playwright,您需要同时添加path&domainurl。参照。addCookies 文档中的注释代码

**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>>

这与域是可选的标准行为不同。

于 2021-07-01T17:14:31.363 回答
-2

const 上下文仅在 beforeEach 方法中设置,并且在您的测试中不可用。

将其定义为全局变量

于 2020-11-11T00:35:03.197 回答