我正试图从要伪造的页面的DOM中获取一个元素。
页面加载后,我致电const arraySchemaOne = Joi.object({
dropdown: Joi.string().valid('Option 1')
}).required();
const arraySchemaTwo = Joi.object({
dropdown: Joi.string().valid('Option 2')
}).required();
this.validationPattern = Joi.object().pattern(/\w/, Joi.object(
{
rows: Joi.ref('rows.length >= 2')
?
Joi.array().items([arraySchemaOne, arraySchemaTwo])
:
Joi.array().items([arraySchemaOne])
}
));
。它返回page.$('.class-name')
形式的一些奇怪对象。
当我从chrome控制台调用{ ClickTale: {} }
时,我得到一个完全不同的对象,该对象与要查找的元素相对应。
我的目标是访问puppeteer中所述元素的href属性。谢谢
答案 0 :(得分:1)
page.$(selector)
与document.querySelector
不同,
querySelector
,但在nodeJS上运行page.$
。 page.$
根据结果返回ElementHandle
或null
。 querySelector返回一个Dom元素。您可以使用$eval来获取所说元素的href
。这将执行querySelector并评估结果。
page.$eval('.class-name', elem => elem.href)
答案 1 :(得分:0)
我也是木偶游戏的新手,也经历过杰克。 我会在回复中得到一个ElementHandle JSHandle。 我设法使用getProperty提取了链接,但可能做错了。 对此的更好解释是here
let te_responce = await page[0].$$('div[class="supergrid-bucket"] > a')
console.log(`Number of entries ${te_responce.length}`)
for (let i = 0; i < te_responce.length; i++) {
console.log(`link ${await(await te_responce[i].getProperty('href')).jsonValue()}`)
}