首页 > 解决方案 > 检查元素是否存在并获取属性

问题描述

我不知道为什么这段代码不起作用:

var stock;
var stockEL = await page.$eval('.qty tbody tr td:nth-of-type(1) span');
if ( stockEL !== null) {
stock = stockEL.getAttribute('data-tip');
}

我正在尝试在 Puppeteer 中使用。我想检查第一个 td 的跨度是否存在,如果存在,请读取 span 属性,如果不存在则什么也不做。

 Error: Error: failed to find element matching selector ".qty tbody tr td:nth-of-type(1) span"

标签: javascriptnode.jspuppeteer

解决方案


试试这个变种await page.$(selector)page.waitForSelector. 请记住,$eval 和 $$eval 需要一个函数作为它的第二个参数。

[示例评估]

const data = await page.$$eval('selector', el => { /*code*/ });

[示例等待选择器]

await page.waitForSelector('body > div.wrapper > aside > section > ul > li:nth-child(4) > a > span');

这里有一些有用的链接


推荐阅读