如果我们不知道有多少列表项被获取,如何选择选择器并等待所有列表项被加载。让我们想象一下它们是通过 ajax 获取的。
可以说以下是获取的模糊 html 和最多 5 li 元素。我们还不知道特定提取中存在多少个。但也许在真实场景中可能有 100 个列表项。
<ul class='container'>
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
</ul>
我们的 puppeteer wait api 应该是什么,或者任何合适的东西,这是最简单的获取方式,不会遗漏任何东西。
以下方法是否有效? (但它仍然看起来很模糊,并且主要导致导航或其他一些错误)
await page.evaluate(() =>
document.querySelector('.container').childNodes.length>3
);
您可以使用
.waitForFunction
等到条件为true
。
在这种情况下:等到
.container
最少有3个孩子。
await page.waitForFunction(() => {
return document.querySelector('.container').children.length > 3;
});
更简单的方法:
await page.waitForFunction(() => {
return document.querySelector('.container').childElementCount > 3;
});