puppeteer疑难杂症解决记录

最近在工作中遇到了两个比较棘手的问题,花费了较长时间解决。因此做下记录,免得日后遇到相同问题又浪费时间。

这两个问题是:

  1. 如何设置live server的host和port
  2. 在node.js环境中使用puppeteer的过程

先说第一个

为啥要配置live server的host和port呢?

一般情况下,使用puppeteer做一些前端页面的自动化测试是比较方便的。但是这就出现了一个问题,那就是在开发机上通过live server启动index.html的host和port是内置分配的,和实际线上的host和port不一致。

这就导致了在puppeteer脚本写完之后还需要将代码中的port和host手动修改成实际使用环境中的值。非常的麻烦,也很容易出现纰漏。

所以需要通过设置将live server的port和host设置的和实际使用环境中的一样,然后再开始写测试脚本。

首先在vscode中使用快捷键ctrl+shift+p打开命令行窗口,输入

txt 复制代码
settings.json

然后选择Open User Settings (JSON),如下图所示:

这样就进入到了用户设置文件中:

此时只需要增加两个设置就可以了:

json 复制代码
    "liveServer.settings.host": "127.0.0.1",
    "liveServer.settings.port": 8080

这样一来,通过live server打开的index.html就是运行在127.0.0.1:8080这个地址上了。

下面说下如何在node环境中使用puppeteer

需要以下的环境:

  • node version v18.18.2
  • puppeteer-core ^22.6.0

这里使用puppeteer-core而不是puppeteer,因为如果是后者因为下载的内容比较多,非常容易失败,加上缓存等干扰,如果切换了node的版本就会造成很多麻烦,因此直接使用puppeteer-core,手动下载chrome浏览器即可省去很多麻烦的事情。

所以先下载一个chrome浏览器吧,这很真的很重要!

下载好之后,没有什么问题的话就会在桌面找到快捷方式了:

右击-属性-目标-复制

得到如下所示的引用地址:

txt 复制代码
C:\Program Files\Google\Chrome\Application\chrome.exe

接下来,先切换node的版本,使用nvm可以轻松做到:

bash 复制代码
nvm use 18.18.2

镜像源也要切换一下,使用nrm:

bash 复制代码
nrm use taobao

然后新建一个文件夹,然后初始化项目并安装puppeteer-core

bash 复制代码
yarn init -y
yarn add puppeteer-core@22.6.0

安装好之后就可以尝试使用了,这里我们新建一个js文件:

bash 复制代码
touch check.js

文件内容如下:

js 复制代码
const puppeteer = require('puppeteer-core');

const chromePath = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe';

const run = async () => {

  const browser = await puppeteer.launch({
    headless: false,
    args: ['--no-sandbox', '--disable-setuid-sandbox'],
    executablePath: chromePath
  });
  const page = await browser.newPage();
  await page.setViewport({ width: 1920, height: 945 });
  await page.goto('http://127.0.0.1:8080/');
  // 关闭浏览器
  await browser.close();
}

run();

需要注意的是windows的文件路径在node.js中的写法,这里对比下:

txt 复制代码
复制的:
C:\Program Files\Google\Chrome\Application\chrome.exe
需要的:
'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'

最后在控制台尝试使用:

bash 复制代码
node check.js

如果能够打开浏览器并且不报错,就算是成功了。

总结一下

这篇文章主要对于使用puppeteer的前后准备工作做了介绍,希望大家看到这篇小记之后能够少走一些弯路,将时间多多用在实际业务需求上。

相关推荐
亿牛云爬虫专家21 小时前
用Puppeteer点击与数据爬取:实现动态网页交互
javascript·爬虫·爬虫代理·puppeteer·数据·代理ip·16yun
黑金IT3 天前
Puppeteer点击系统:解锁百度流量点击率提升的解决案例
nodejs·puppeteer·百度排名
黑金IT10 天前
在浏览器中运行 Puppeteer:解锁新能力
nodejs·puppeteer·浏览器自动化
黑金IT10 天前
在浏览器和Node.js环境中使用Puppeteer的Rollup与Webpack打包指南
前端·webpack·node.js·puppeteer·浏览器自动化
亿牛云爬虫专家1 个月前
Puppeteer自动化:使用JavaScript定制PDF下载
javascript·爬虫·pdf·自动化·爬虫代理·puppeteer·代理ip
亿牛云爬虫专家1 个月前
Puppeteer的高级用法:如何在Node.js中实现复杂的Web Scraping
前端·javascript·爬虫·node.js·爬虫代理·puppeteer·代理ip
omage1 个月前
如何解决npm下载Puppeteer卡死的问题
前端·npm·node.js·puppeteer
亿牛云爬虫专家1 个月前
利用Puppeteer-Har记录与分析网页抓取中的性能数据
chrome·node.js·浏览器·爬虫代理·puppeteer·chromium·代理ip
倪风61 个月前
关于puppeteer项目部署到ubuntu报错记录
linux·运维·chrome·ubuntu·puppeteer·nest
Smartdaili China2 个月前
使用 Puppeteer-Cluster 和代理进行高效网络抓取: 完全指南
大数据·开发语言·网络·爬虫·php·puppeteer·代理服务器