javascript - 使用 Puppeteer,如何从
问题描述
我正在使用 CucumberJS 和 Puppeteer。我很难从<h1>
标签中提取文本。
ember .hbs 代码是:
<div class="grid__cell" data-test-foobar4="true">
<h1 class="ao-headline u-font--light" data-test-foobar3="true">{{pageTitle}}</h1>
</div>
data-
因为 EmberJS 使用动态 id,所以我为我的选择器使用 HTML标签。
// Read page table title
async verifyTestTileForList() {
const textContent = await this.page.evaluate(() => document.body.querySelector('[data-test-foobar3="true"]').textContent);
console.log('Page title = ' + textContent);
}
当我运行它时,我得到:
错误:评估失败:TypeError:无法读取 null 的属性“textContent”
这对我来说没有意义。我查看 HTML,我看到:
<h1 data-test-foobar3="true" class="ao-headline u-font--light">Imports</h1>
我哪里错了?
解决方案
page.waitForSelector()
该元素很可能是动态生成的,因此您应该在尝试抓取之前等待该元素textContent
:
await page.waitForSelector('[data-test-foobar3="true"]');
const textContent = await page.evaluate(() => document.querySelector('[data-test-foobar3="true"]').textContent);
console.log('Page title = ' + textContent);
推荐阅读
- php - 如何在 laravel 5.6 中编辑 pdf 文件。如果未编辑或另一个选定的文件保存相同的文件?
- blockchain - 如何使用去中心化应用程序将数据存储在以太坊上
- c# - 我们可以将 .snk 文件用于 c++ dll 吗?
- c# - C#类继承、接口和实例化
- python - Python Flask API - 发布和接收字节数组和元数据
- apache-kafka - 如何将 Avro 事件推送到 Memsql
- powershell - Terraform GCP:在创建时在 Windows 实例中运行 PowerShell
- sql - 如何选择没有冗余值的 SQL 连接表
- android - 房间得到 ConcurrentModificationException
- git - 更改原点后的 Git 提交分支