-- 经常使用元素选择器javascript
选择器 | 示例 | 解释 |
id选择器 | #id | 选择匹配id的元素,仅存在一个 |
class选择器 | .class | 同时匹配多个class 元素 |
属性选择器 | div[attr] | 匹配具备attr的属性,不考虑他的值 |
属性选择器 | div[attr='122'] | 匹配具备attr的属性,值为122 |
后代选择器 | div span | 后代选择器,匹配全部div 后面的span标签,div 与 span之间用空格隔开 |
子元素选择器 | div > span | 子元素选择器,匹配div 后全部的span |
匹配父元素下的第n个子元素 | div:nth-child(2) | 匹配父元素下的第2个元素 |
实例网址:https://www.cnblogs.com/css
代码演示:java
const puppeteer = require('puppeteer'); (async () => { const brower = await puppeteer.launch({ executablePath:'D:\\wangxiao\\chrome-win\\chrome-win\\chrome.exe', headless:false }); const page = await brower.newPage(); await page.goto('https://www.cnblogs.com/'); const input = await page.$('#zzk_q'); input.type('12222'); //await brower.close(); })().catch(error =>{console.log('error')});
这里不一一演示了,演示主要的,好比子级,如图,咱们想登入,可是登入没有id,也没有class, 那咱们试试其余方式,往父级看,node
有惟一id = 'span_userinfo' ,那么咱们能够手写成git
获取全部的a标签 - > github
element = '#span_userinfo a' chrome
获取登入的超级连接api
element = '#span_userinfo a:nth-child(1)'浏览器
咱们代码验证一下对不对less
const puppeteer = require('puppeteer'); (async () => { const brower = await puppeteer.launch({ executablePath:'D:\\wangxiao\\chrome-win\\chrome-win\\chrome.exe', headless:false }); const page = await brower.newPage(); await page.goto('https://www.cnblogs.com/'); await page.click('#span_userinfo a:nth-child(1)') //await brower.close(); })().catch(error =>{console.log('error')});
步骤:
1.打开浏览器开发者工具(F12)
2.在浏览器的Console窗口中使用document.querySelectorAll调试你的css选择器