Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查元素是否存在并获取属性_Javascript_Node.js_Puppeteer - Fatal编程技术网

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元素。看到区别了吗