Я пытаюсь перебрать массив ElementHandles и добавить их на вторую страницу следующим образом:
const htmlContent: string = `
<html><head></head><body>
<div class="section">Section 1</div>
<div class="section">Section 2</div>
<div class="main-container"></div>
</body></html>`
let browser: Browser = await Puppeteer.launch();
const firstPage: Page = await browser.newPage();
const secondPage: Page = await browser.newPage();
await firstPage.goto('data:text/html;charset=UTF-8,' + htmlContent);
await secondPage.goto('data:text/html;charset=UTF-8,' + htmlContent);
let sections: ElementHandle[] = await firstPage.$$('.section');
for (const section of sections) {
secondPage.$eval('.main-container', (el: any, section: ElementHandle) => {
el.append(section);
}, section);
}
browser.close()
Я основываю этот код на документации Puppeteer для класса ElementHandle:
Экземпляры ElementHandle могут использоваться в качестве аргументов в методах page. $ Eval () и page.evaluate ().
Однако это не работает. Он генерирует трассировку стека со следующим сообщением:
Ошибка: JSHandles можно оценивать только в том контексте, в котором они были созданы!
Я попытался определить раздел как any
, а также JSHandle
с тем же результатом.
Я искал в документации API любые подсказки относительно того, что я делаю неправильно, безрезультатно.
Буду признателен за любую помощь!