page.$(selector) 返回一个包含 ElementHandle 的 Promise。但ElementHandle的文档有点欠缺。它说它“表示DOM元素”,但这到底意味着什么?如果它确实代表了DOM,为什么不能检查ElementHandle的内容?另外,它还说:“除非处理已丢弃,否则会阻止DOM元素被垃圾回收。” 如果浏览器仍在页面上,为什么DOM元素会被垃圾回收呢?我之所以会问这个问题,是因为我认为从页面上的一个元素中获取文本很简单,所以我尝试了一下:
const text = await page.$('#text').textContent;
返回了undefined
。所以我尝试了一下,
const text = await page.$('#text').textContent();
出现错误。
事实证明正确的方法是
const text = await page.evaluate(() => document.querySelector('#text').textContent);