node puppeteer操作页面、获取页面内容

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();
发布了550 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43294560/article/details/104860991