рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рдбреАрдмреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХреГрдкрдпрд╛, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
'use strict';
const puppeteer = require('puppeteer');
(async function main() {
try {
let browser = await puppeteer.launch({
headless: false,
userDataDir: 'test-profile-dir',
});
let page = await browser.newPage();
await page.goto('https://example.org/');
await page.evaluate(setIDB, 'headfulIDB', 'foo');
await page.close();
await browser.close();
browser = await puppeteer.launch({
headless: true,
userDataDir: 'test-profile-dir',
});
page = await browser.newPage();
await page.goto('https://example.org/');
await page.evaluate(setIDB, 'headlessIDB', 'bar');
await page.close();
await browser.close();
browser = await puppeteer.launch({
headless: false,
userDataDir: 'test-profile-dir',
});
page = await browser.newPage();
await page.goto('https://example.org/');
console.log('Headful mode.');
console.log('Headful IDB: ', await page.evaluate(getIDB, 'headfulIDB'));
console.log('Headless IDB: ', await page.evaluate(getIDB, 'headlessIDB'));
await page.close();
await browser.close();
browser = await puppeteer.launch({
headless: true,
userDataDir: 'test-profile-dir',
});
page = await browser.newPage();
await page.goto('https://example.org/');
console.log('Headless mode.');
console.log('Headful IDB: ', await page.evaluate(getIDB, 'headfulIDB'));
console.log('Headless IDB: ', await page.evaluate(getIDB, 'headlessIDB'));
await page.close();
await browser.close();
} catch (err) {
console.error(err);
}
})();
function setIDB(key, value) {
return new Promise((resolve, reject) => {
const openRequest = indexedDB.open('testIDB', 1);
openRequest.onerror = (err) => { reject(err.target.error); };
openRequest.onupgradeneeded = (event) => { event.target.result.createObjectStore('test'); };
openRequest.onsuccess = (event) => {
const db = event.target.result;
db.onerror = (err) => { db.close(); reject(err.target.error); };
db.transaction('test', 'readwrite')
.objectStore('test')
.put(value, key)
.onsuccess = () => { db.close(); resolve(); };
};
});
}
function getIDB(key) {
return new Promise((resolve, reject) => {
const openRequest = indexedDB.open('testIDB', 1);
openRequest.onerror = (err) => { reject(err.target.error); };
openRequest.onupgradeneeded = (event) => { event.target.result.createObjectStore('test'); };
openRequest.onsuccess = (event) => {
const db = event.target.result;
db.onerror = (err) => { db.close(); reject(err.target.error); };
db.transaction('test', 'readonly')
.objectStore('test')
.get(key)
.onsuccess = (eventGet) => {
const { result } = eventGet.target;
db.close();
resolve(result);
};
};
});
}
рдЖрдЙрдЯрдкреБрдЯ:
Headful mode.
Headful IDB: foo
Headless IDB: undefined
Headless mode.
Headful IDB: undefined
Headless IDB: bar
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рддрд░рд╣ рдЧрдВрдз рдЖрддреА рд╣реИ), рдпрд╣ рд╣реЗрдбрдлреБрд▓ рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ --user-data-dir=/tmp/someFolder/
ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╣реЗрдбрдлреБрд▓ рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕рдб рдбреАрдмреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдмрдВрдж рдХрд░реЗрдВ, рдлрд┐рд░ рд╣реЗрдбрдлреБрд▓ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдЬрд╛рд░реА рдирд╣реАрдВ рд░рд╣реЗ (рдЗрд╕рд▓рд┐рдП рд╣реЗрдбрдлреБрд▓ рд╣реЗрдбрдлреБрд▓ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛)ред рдЬреЛрдбрд╝реА рдХреЗ рдЕрдиреНрдп рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмреАрдЪ рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИ: рд╣реЗрдбрд▓реЗрд╕ - рд╣реЗрдбрд▓реЗрд╕, рдФрд░ рд╣реЗрдбрд▓реЗрд╕ - рд╣реЗрдбрдлреБрд▓, рд╣реЗрдбрдлреБрд▓ - рд╣реЗрдбрд▓реЗрд╕ред
рдпрд╣ рдХрдардкреБрддрд▓реА рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред
рдирдорд╕реНрддреЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдорд┐рд▓ рдЧрдпрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВрдиреЗ ' about:blank ' рдкреГрд╖реНрда рдкрд░ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдерд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рддрд░рд╣ рдЧрдВрдз рдЖрддреА рд╣реИ), рдпрд╣ рд╣реЗрдбрдлреБрд▓ рдореЗрдВ рднреА рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ
--user-data-dir=/tmp/someFolder/
ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рд╣реЗрдбрдлреБрд▓ рдореЗрдВ рдЗрдВрдбреЗрдХреНрд╕рдб рдбреАрдмреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдмрдВрдж рдХрд░реЗрдВ, рдлрд┐рд░ рд╣реЗрдбрдлреБрд▓ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓реЗрдВ, рдкрд░рд┐рд╡рд░реНрддрди рдЬрд╛рд░реА рдирд╣реАрдВ рд░рд╣реЗ (рдЗрд╕рд▓рд┐рдП рд╣реЗрдбрдлреБрд▓ рд╣реЗрдбрдлреБрд▓ рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛)ред рдЬреЛрдбрд╝реА рдХреЗ рдЕрдиреНрдп рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмреАрдЪ рднреА рдпрд╣реА рд╣реЛрддрд╛ рд╣реИ: рд╣реЗрдбрд▓реЗрд╕ - рд╣реЗрдбрд▓реЗрд╕, рдФрд░ рд╣реЗрдбрд▓реЗрд╕ - рд╣реЗрдбрдлреБрд▓, рд╣реЗрдбрдлреБрд▓ - рд╣реЗрдбрд▓реЗрд╕редрдпрд╣ рдХрдардкреБрддрд▓реА рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ - рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред