Используя Puppeteer, как вы получаете текст из тега <h1>? - PullRequest
0 голосов
/ 01 сентября 2018

Я использую 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>

Я использую теги HTML data- для своих селекторов, поскольку EmberJS использует динамические идентификаторы.

// 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);
}

Когда я запускаю это, я получаю:

Ошибка: ошибка оценки: Ошибка типа: Не удалось прочитать свойство 'textContent' со значением NULL

Что не имеет смысла для меня. Я смотрю на HTML и вижу:

<h1 data-test-foobar3="true" class="ao-headline u-font--light">Imports</h1>

Куда я иду не так?

1 Ответ

0 голосов
/ 01 сентября 2018

Элемент, скорее всего, генерируется динамически, поэтому вам следует подождать, пока элемент наберет 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);
...