我如何使用 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
注:之前有人问过类似的问题:
我想得到这个的值
<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
注:之前有人问过类似的问题: