IT関連雑記帳

IT関連の話をつらつらと

Puppeteerでカスタムデータ属性の値を取得する方法

Puppeteerでdata-*のようなカスタムデータ属性の値を取得するには、以下のようにevaluateを使用します。

このやり方、知っている人には当たり前の話すぎるのか分かりませんが、Google先生に聞いてもほとんど見つかりませんでした。構文をすぐに忘れてしまいそうなので、自分用にメモしておきます。(メモしたことすら忘れるかもしれませんが……)

HTML(抜粋)
<tr>
    <td>hogehoge</td>
    <td>
        <input id="xxxx" type="text" value="99999999" maxlength="10">
    </td>
    <td>
        <a href="https://example.com" data-test-id="12345678" class="foo">リンク</a>
    </td>
</tr>
Puppeteer
let trList = await page.$('tr');
let tdList = await trList.$$('td');
let testId = await (await tdList[2].$('a')).evaluate(node => node.getAttribute('data-test-id'));

evaluateをちゃんと理解できていないし、違う書き方もありそうなんですが、とりあえず動いたのでヨシ(よくない

【参考にしたサイト】

stackoverflow.com