Javascript 检查元素是否存在并获取属性
我不明白为什么这段代码不起作用:Javascript 检查元素是否存在并获取属性,javascript,node.js,puppeteer,Javascript,Node.js,Puppeteer,我不明白为什么这段代码不起作用: var stock; var stockEL = await page.$eval('.qty tbody tr td:nth-of-type(1) span'); if ( stockEL !== null) { stock = stockEL.getAttribute('data-tip'); } 我想用在木偶戏里。我想检查第一个td的跨度是否存在,如果存在,请阅读span属性,如果不存在,则不执行任何操作 Error: Error: failed to
var stock;
var stockEL = await page.$eval('.qty tbody tr td:nth-of-type(1) span');
if ( stockEL !== null) {
stock = stockEL.getAttribute('data-tip');
}
我想用在木偶戏里。我想检查第一个td的跨度是否存在,如果存在,请阅读span属性,如果不存在,则不执行任何操作
Error: Error: failed to find element matching selector ".qty tbody tr td:nth-of-type(1) span"
尝试此变体
wait page.$(选择器)
或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');
这里有一些有用的链接
“div”
?基本上,我试图确定页面是否正在加载,或者是否正在加载,但是选择器在加载的页面上根本不存在。以人头模式运行脚本,降低执行速度,调试它。对一般问题的一般建议。如果需要更多帮助,请共享站点或相关DOM。您的选择器看起来太复杂了,请尽量简化它,一个类、一个属性、一个id通常是一个解决方案。也许您可以尝试一点一点地分解它,先查找“.qty”,然后再查找.qty tbody,依此类推,直到出现故障-只需检查字符串是否完全正确。请注意片段中的两个问题:1<代码>页面。$eval()需要一个函数作为其第二个参数,所以您可能是指页面。$()
来获取ElementHandle;2.ElementHandle没有getAttribute
方法-它不是DOM元素。看到区别了吗