Cookie
Puppeteer 提供了通过直接操作浏览器存储来提前获取、设置和删除 Cookie 的方法。如果你需要在测试中保存和恢复特定的 Cookie,这会很有用。
获取 Cookie
以下示例演示了如何获取浏览器默认 BrowserContext 中可用的 Cookie。
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
// In this example, we set a cookie using script evaluation.
// Cookies can be set by the page/server in various ways.
await page.evaluate(() => {
document.cookie = 'myCookie = MyCookieValue';
});
console.log(await browser.cookies()); // print available cookies.
设置 Cookie
Puppeteer 也可以将 Cookie 直接写入浏览器的存储:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
// Sets two cookies for the localhost domain.
await browser.setCookie(
{
name: 'cookie1',
value: '1',
domain: 'localhost',
path: '/',
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
{
name: 'cookie2',
value: '2',
domain: 'localhost',
path: '/',
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
);
console.log(await browser.cookies()); // print available cookies.
删除 Cookie
Browser.deleteCookie() 方法允许从存储中删除 Cookie。
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
// Deletes two cookies for the localhost domain.
await browser.deleteCookie(
{
name: 'cookie1',
value: '1',
domain: 'localhost',
path: '/',
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
{
name: 'cookie2',
value: '2',
domain: 'localhost',
path: '/',
expires: -1,
httpOnly: false,
secure: false,
sourceScheme: 'NonSecure',
},
);
console.log(await browser.cookies()); // print available cookies.
除了操作默认浏览器上下文的 Browser 方法之外,BrowserContext 类上也提供相同的方法。