无论我做什么,都会收到错误(X.cookies不是函数,或者X.addCookies不是函数)。我尝试使用上下文page.context。 browserContext等,并且总是以相同的方式结束(好的,page.context和browserContext是未定义的,因此错误有所不同)。
上下文:
代码:
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();
答案 0 :(得分:0)
为了使用 playwright
设置 cookie,您需要同时添加 path
和 domain
或 url
。参见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 的行为不同,其中域是可选的。
答案 1 :(得分:-1)
const上下文仅在beforeEach方法内部设置,在测试中不可用。
将其定义为全局变量