我如何使用 Puppeteer 按名称获取元素值?

How would I get an element value by name using Puppeteer?

我想得到这个的值

<input type="hidden" value="12345" name="InitiationTT">

但由于它没有 ID,我想通过名称检索值。我第一次尝试这个:

const cii = await page.$("InitiationTT");
const init = await page.evaluate(el => el.getAttribute("value"), cii);

无效并抛出了 TypeError: Cannot read properties of null (reading 'getAttribute'),所以我尝试了这个:

const cii = page.evaluate(() => {document.querySelector("input[name=InitiationTT]").value});

这给了我 Promise { <pending> } 所以我终于尝试了这个:

const cii = document.querySelector("input[name=InitiationTT]").value;

这给了我 ReferenceError: document is not defined 所以我假设这是因为我使用的是 NodeJS(?)

这 3 种方法都不起作用,我不知道 Puppeteer 是否有办法通过元素的名称获取元素的值。任何帮助将不胜感激。

确保您的选择器是正确的。此外,value 属性 应该在 <input> 元素上可用。

const r = await page.$eval('input[name="InitiationTT"]', ({ value }) => value); // 12345

参考: How to get element value in puppeteer


注:之前有人问过类似的问题: