我想知道是否有与 Selenium 类似的方式来等待特定元素的文本出现。我试过这样的事情,但它似乎没有等待:
await page.waitForSelector('.count', {visible: true});
原文由 elena 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道是否有与 Selenium 类似的方式来等待特定元素的文本出现。我试过这样的事情,但它似乎没有等待:
await page.waitForSelector('.count', {visible: true});
原文由 elena 发布,翻译遵循 CC BY-SA 4.0 许可协议
除了 nilobarp 的答案中介绍的方法外,还有两种方法可以做到这一点:
使用伪选择器 :empty
可以找到不包含子节点或文本的元素。将其与 :not
选择器结合,我们可以使用 page.waitForSelector
来查询非空的选择器:
await page.waitForSelector('.count:not(:empty)');
如果您不仅要确保该元素不为空,而且要检查它包含的文本,您可以使用 page.waitForXPath
XPath 表达式:
await page.waitForXPath("//*[@class='count' and contains(., 'Expected text')]");
只有在页面上有一个元素具有属性 class="count"
并包含文本 Expected text
之后,该行才会解析。
原文由 Thomas Dondorf 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答12.8k 阅读
7 回答1.9k 阅读
3 回答2.6k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答889 阅读✓ 已解决
6 回答1.1k 阅读
您可以使用
waitForFunction
。请参阅 https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pagewaitforfunctionpagefunction-options-args包括@elena 的答案完整性解决方案: