Мой сценарий кукловода приземляется на одной странице, но может быть некоторое внутреннее перенаправление, и я хочу сгенерировать cookie-файл после того, как последняя страница попадет. Итак, я установил некоторый тайм-аут ожидания, чтобы я мог убедиться, что моя страница была загружена.
Я также создаю скриншот и вижу свою страницу
Вот код Иногда он генерирует ложное печенье.
async function main(proxy) {
let promiseArray = [];
let chromeOptions = {
headless: true,
slowMo:10,
defaultViewport: null,
args: [
`--proxy-server=${proxy}`,
]
};
const browser = await puppeteer.launch(chromeOptions);
const page = await browser.newPage();
let finalCookie = '';
const userAgent = 'Mozilla/5.0 (X11; Linux x86_64)' +
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36';
// **This is page load event**
promiseArray.push(new Promise(async function(resolve, reject) {
await page.on('load', async function () {
let cookies = await page.cookies();
console.log("START==================================");
console.log(await page.url());
let cookieArray = [];
cookies.forEach(function (item) {
cookieArray.push(item.name + '='+item.value);
});
finalCookie = cookieArray.join(';');
console.log('END');
resolve();
});
}));
await page.setUserAgent(userAgent);
// const page = await browser.createIncognitoBrowserContext();
await page.authenticate({ username: 'spopov', password: '68LYCfVy' });
url = urls[Math.floor(Math.random() * urls.length)];
await page.goto(url, {
waitUntil: 'networkidle0',
timeout: 0
});
let filename = 'screenshots/'+ proxy + '-1.png';
try {
await page.waitForSelector('#someid');
} catch (e) {
console.log("Error in cookie generation");
await page.screenshot({path: filename});
}
await page.screenshot({path: filename});
await timeout(3000);
filename = 'screenshots/'+ proxy + '-2.png';
await page.screenshot({path: filename});
await browser.close();
return Promise.all(promiseArray)
.then(async (result) => {
let cookies = await page.cookies();
let cookieArray = [];
cookies.forEach(function (item) {
cookieArray.push(item.name + '='+item.value);
});
finalCookie = cookieArray.join(';');
return finalCookie;
});
};
Я хочу убедиться, что когда мой файл cookie сгенерирован, страница полностью загружена, и я получаю правильный файл cookie.
const timeout = millis => новое обещание (resol => setTimeout (resol, millis));