Getting a Selector#39;s value in Puppeteer(在Puppeteer中获取选择器的值)
问题描述
在特定情况下,我需要使用Puppeteer访问一系列复选框。每个复选框具有相同的id
和name
,但value
的值不同。我想要获取每个选择器的值,然后使用该值单击与我要扫描的文本选择器匹配的复选框。以下是代码段:
await page.waitForSelector("input[type='checkbox']");
let boxArray = await page.$$eval("input[type='checkbox']", el => el.value);
const boxes = (await page.$$("input[type='checkbox']")).length;
for(var box=2;box<boxes+1;box++)
{
await page.waitForSelector("this is inconsequential");
const title = await page.$eval("this is inconsequential", el => el.innerText);
if(title.includes("string I'm searching for"))
{
console.log('Clicking group check box: %s', title);
console.log('Value: %s', boxArray[box]);
await page.waitForSelector("input[value='"+boxArray[box]+"']");
// the rest doesn't matter
}
}
一旦代码达到console.log('Value: %s', boxArray[box])
,我就会收到以下错误:
Value: undefined
TypeError: Cannot read property '5' of undefined
我不明白为什么boxArray没有定义,因为page.$$eval()
应该用页面上每个复选框的值填充一个数组。
推荐答案
boxArray未定义。
$$eval
将运行Array.from(document.querySelectorAll("input"))
并将其传递给pageFunction。它不会创建循环来获取每个函数的值。https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#pageevalselector-pagefunction-args
使用a表示.获取值,而不是$$eval。请考虑以下示例:
const inputsValues = [];
const inputElements = await page.$$('input');
for (const element of inputElements) {
let inputValue;
inputValue = await element.getProperty('checked');
inputValue = await inputValue.jsonValue();
inputsValues.push(inputValue);
}
这篇关于在Puppeteer中获取选择器的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在Puppeteer中获取选择器的值


- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- 失败的 Canvas 360 jquery 插件 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- Flexslider 箭头未正确显示 2022-01-01