Прежде всего, посмотрите на этот простой пример:
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent('<html><div><a class="link">Click here</a></div></html>');
const elementHandle = await page.$('div');
const elementHandleWithNull= await elementHandle.$('a.link');
Когда я устанавливаю содержимое на страницу методом Page.setContent
, и когда я хочу запросить элемент с помощью селектора в page
- это нормально.
Но, когда я пытаюсь что-то сделать с возвращенным ElementHandle объектом из page.$('div')
- это невозможно. elementHandle
действительно является ElementHandle объектом, но без HTML-содержимого. Когда вы пытаетесь запросить что-то, например, методом $()
, вы получаете null
значение.
Я работаю над: Node.js v. 12.6.0 Протестировано на Puppeteer v. 1.12.2 и 2.0. 0
Что случилось? Это ошибка или какая-то спецификация setContent
?