1、获取页面内容,获取dom对象使用,page.$$eval()/$eval
本身是个promise对象,await 获取回调函数的返回值
其中:
let x=await page.$/$$eval('选择器',回调函数(参数是dom对象))
2、对页面进行点击等模拟用户操作,使用page.$()/page.$$(),返回一个ElementHandle,
封装了事件方法
本身是个promise对象,await 获取ElementHandle
例:
let inputEle =await page.$('.searchl .formhue');
inputEle.focus()
3、模拟键盘操作,本身是个promise对象,await获取内容
若要模拟输入,要先第2步中的锁定焦点,再输入
await page.keyboard.type('模拟输入内容')
模拟按下A:
await page.keyboard.down('Shift');
await page.keyboard.press('KeyA');
await page.keyboard.up('Shift');
代码示例:
获取页面内容:
let puppeteer =require('puppeteer')
async function test(){
let options={
//使用无头模式,默认为有头(true为无界面模式)
headless:false,
//设置打开页面在浏览器中的宽高
defaultViewport:{
width:1000,
height:800
}
}
//返回浏览器实例
let browser=await puppeteer.launch(options)
//创建新页面,并返回页面对象
let page=await browser.newPage();
//进入指定页面
await page.goto('https://www.dytt8.net/');
//若要截取指定浏览器图片,图片会被放在当前路径下
// await page.screenshot({path: 'screenshot.png'});
//page.$$eval是一个promise对象
//获取页面内容,在浏览器输出
let eles=await page.$$eval("#menu li a",(elements)=>{
let eles=[];
elements.forEach(function(item,index){
if(item.getAttribute('href')!='#'&&item.innerText!='APP下载'){
var eleObj={
href:item.getAttribute('href'),
text:item.innerText
}
eles.push(eleObj);
}
console.log(eleObj);
})
//返回导航栏的href和文本内容
return eles;
})
console.log(eles);
//监听输出事件,在终端输出
//回调函数第一个参数.text();输出被监听事件的内容
// page.on('console',function(e){
// console.log(e.text());
// })
//再开启一个页面去访问分类链接跳转页面内容
let gnPage= await browser.newPage();
gnPage.goto(eles[2].href);
}
test();
操作页面:
let puppeteer =require('puppeteer')
async function test(){
let options={
//使用无头模式,默认为有头(true为无界面模式)
headless:false,
//设置打开页面在浏览器中的宽高
defaultViewport:{
width:1000,
height:800
},
//设置每个步骤放慢250毫秒
slowMo:250
}
//返回浏览器实例
let browser=await puppeteer.launch(options)
//创建新页面,并返回页面对象
let page=await browser.newPage();
//进入指定页面
await page.goto('https://www.dytt8.net/');
//获取页面对象并调用事件时,使用$$/$,会创建ElementHandle,
//代表选中元素,封装了事件方法
let eles=await page.$$('#menu li a')
// eles[2].click()
//输入搜索
inputEle =await page.$('.searchl .formhue');
inputEle.focus()
//通过虚拟键盘来实现键盘操作
await page.keyboard.type('复仇者联盟')
//点击按钮
let btn=await page.$('.searchr input[name="Submit"]')
btn.click()
}
test();