如何用Nightmare(Node.js/Atom)点击带data-style-name="Black"的Supreme链接?
解决Nightmare点击Supreme商品属性元素的问题
嘿,我来帮你搞定这个选择器的问题!你之前的写法之所以报错,是因为用了不符合CSS语法的选择器格式——Nightmare的click方法接受的是标准CSS选择器,而你写的data-style-name ='Black'并不是有效的语法。
正确的属性选择器写法
要选择带有data-style-name="Black"属性的元素,你需要用CSS的属性选择器语法,格式是[属性名="属性值"],所以正确的代码应该是:
.click('[data-style-name="Black"]')
更精确的选择器(可选)
因为目标元素同时带有selected类,你可以结合类名来让选择器更精准,避免误点其他可能存在的同属性元素:
.click('a.selected[data-style-name="Black"]')
这个选择器会专门定位到带有selected类、且data-style-name值为Black的<a>标签,和你提供的元素代码完全匹配。
完整示例片段
把正确的选择器放到你的Nightmare脚本里大概是这样:
const Nightmare = require('nightmare'); const nightmare = Nightmare({ show: true }); nightmare .goto('http://www.supremenewyork.com/shop/bags/lkav6jh17/p9ylgt8vm') .wait('[data-style-name="Black"]') // 最好先等待元素加载完成 .click('[data-style-name="Black"]') .then(() => { console.log('成功点击黑色书包选项!'); }) .catch(err => { console.error('操作失败:', err); });
为什么原来的代码报错?
报错信息里提到的querySelector是Nightmare底层用来查找元素的API,它只接受标准CSS选择器。你之前写的data-style-name ='Black'不符合语法规则,所以无法被识别,换成标准的属性选择器格式就可以正常工作了。
内容的提问来源于stack exchange,提问作者user9861465
相关产品推荐
相关产品推荐

