如何使用Puppeteer通过name属性获取元素的value值
Puppeteer通过name属性获取元素value值的正确方案
错误原因说明
- 第一种写法错误:
page.$()接收的是合法CSS选择器,仅传入"InitiationTT"会被识别为匹配标签名为InitiationTT的元素,自然查询结果为null,调用方法时报错 - 第二种写法错误:
page.evaluate()是异步方法,需要加await关键字等待执行完成,否则只会拿到未完成的Promise对象 - 第三种写法错误:Node.js运行环境不存在浏览器端的
document全局对象,浏览器DOM相关代码必须放在page.evaluate()的回调函数中执行
正确写法
写法1:先获取元素句柄再取值
如果需要后续操作该元素可以用该方式:
// 先等待元素加载完成,避免动态渲染场景查询为空 await page.waitForSelector('input[name="InitiationTT"]'); // 传入正确的CSS属性选择器匹配name属性 const cii = await page.$('input[name="InitiationTT"]'); const init = await page.evaluate(el => el.value, cii);
写法2:直接在浏览器上下文查询取值
仅需要取值的场景更简洁:
const init = await page.evaluate(() => { return document.querySelector('input[name="InitiationTT"]').value; });
内容的提问来源于stack exchange,提问作者noobcode0000
相关产品推荐
相关产品推荐

