问题描述
无论我做什么,都会收到错误(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,您需要同时添加 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 的行为不同,其中域是可选的。
,const上下文仅在beforeEach方法内部设置,在测试中不可用。
将其定义为全局变量