首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Puppeteer 初探之前端自动化测试

puppeteer是一个nodejs的库,支持调用Chrome的API来操纵Web,相比较Selenium或是PhantomJs,它最大的特点就是它的操作Dom可以完全在内存中进行模拟既V8引擎处理而不打开浏览器...v8引擎来进行页面的测试,简单说就是页面以及Dom完全在内存,就连浏览器事件也是在内存中去模拟触发。...第一步:我们打开页面,考虑到有数据需要异步加载,我们延迟1000ms后调用screenshot方法截图留作日志。...,由于米大师是iframe打开的,所以我们需要先获取到我们当前frame,这个可以调用刚创建的页面实例page的mainFrame()方法即可获得,如果我们需要获取子frame的话也只需要调用childFrames...({ path: '8.png' }); browser.close(); 最后项目目录,我们看到,各个步骤的截图都已生成。

13K64

用 Javascript 和 Node.js 爬取网页

要验证是否确实单击了它,可以检查 classList 是否有一个名为 upmod 的类。如果存在于 classList ,则返回一条消息。...这就具备了一些以前没有的可能性: 你可以获取屏幕截图或生成页面 PDF。 可以抓取单应用并生成预渲染的内容。 自动执行许多不同的用户交互,例如键盘输入、表单提交、导航等。...它还可以 Web 爬取之外的其他任务中发挥重要作用,例如 UI 测试、辅助性能优化等。 通常你会想要截取网站的屏幕截图,也许是为了了解竞争对手的产品目录,可以puppeteer 来做到。...让我们尝试 Reddit 获取 r/programming 论坛的屏幕截图和 PDF,创建一个名为 crawler.js的新文件,然后复制粘贴以下代码: 1const puppeteer = require...完成操作并完成页面加载后,将分别使用 page.screenshot() 和 page.pdf() 获取屏幕截图和 pdf。

10K10
您找到你想要的搜索结果了吗?
是的
没有找到

Puppeteer已经取代PhantomJs

官网 https://pptr.dev/ 就如官网所介绍的,pptr可以做以下的事情: 生成页面的屏幕截图和PDF。 爬取SPA(单应用程序)并生成预渲染的内容(即“ SSR”(服务器端渲染))。...以下片段仅收集一些简单的介绍以及一些例子,具体使用时,可以官网进行更详细的查询 简单入门介绍 Puppeteer 的 API 分层结构基本和浏览器保持一致,下面对常使用到的几个类介绍一下: Browser...true //以下是我们项目触发截图时的判断逻辑,如果 renderdone 出现且为 true 那么就截图,如果是 Object,说明页面加载出错了,我们可以捕获该异常进行提示 let renderdoneHandle...将 Page DOM Environment 中元素和对象封装成对应的 Node.js 对象,这样可以直接这些对象的封装函数进行操作 Page DOM 一些简单的使用例子 1、页面截图 我们使用 Puppeteer...既可以对某个页面进行截图,也可以对页面的某个元素进行截图: (async () => { const browser = await puppeteer.launch(); const

6.1K10

自动化 Web 性能分析之 Puppeteer 爬虫实践

本文将向大家介绍自动化性能分析使用的核心库——Puppeteer,并结合页面登录场景,介绍 Puppeteer 百策系统的应用。...Puppeteer 用途 生成页面的屏幕截图和 PDF。 爬取 SPA 应用,并生成预渲染内容(即 SSR 服务端渲染)。 自动执行表单提交、UI测试、键盘输入等。...初探 Puppeteer页面截图开始 实现页面截图,首先我们需要创建一个浏览器实例,然后打开一个页面,加载指定的 URL,在打开的页面上触发截图操作,最后再将浏览器关闭。...,我们就可以在当前路径找到 one.png,我们打开就可以看到如下截图: ?...结语 当然, Puppeteer 的强大不止于此,我们可以通过 Puppeteer 实现更多有意思的功能,比如使用 Puppeteer 来检测页面图片是否使用懒加载,后续我们会对其功能的实现进行的分享,

3.4K40

前端人的爬虫工具【Puppeteer

Headless Chrome 是什么 可以无界面的环境运行 Chrome。 通过命令行或者程序语言操作 Chrome。 无需人的干预,运行更稳定。...Puppeteer 能做什么 官方介绍:您可以浏览器手动执行的大多数操作都可以使用 Puppeteer 完成!示例: 生成页面的屏幕截图和PDF。 爬取 SPA 或 SSR 网站。...Puppeteer API 分层结构 Puppeteer 的 API 分层结构基本和浏览器保持一致,下面对常使用到的几个类介绍一下: Browser: 对应一个浏览器实例,一个 Browser 可以包含多个...Puppeteer 使用 Case1: 截图 我们使用 Puppeteer可以对某个页面进行截图,也可以对页面的某个元素进行截图: const puppeteer = require('puppeteer...- devTools 的 Performance 可以上传对应的 json 文件并查看分析结果 - 我们可以写脚本来解析 trace.json 的数据做自动化分析 - 通过 tracing 我们获取页面加载速度以及脚本的执行性能

3.3K20

前端工程师的一大神器——puppeteer

Chrome,利用Puppeteer可以获取页面DOM节点、网络请求和响应、程序化操作页面行为、进行页面的性能监控和优化、获取页面截图和PDF等,利用该神器就可以操作Chrome浏览器玩出各种花样。...Frame:页面的框架,每个时间点,页面通过page.mainFrame()和frame.childFrames()方法暴露当前框架的细节。...return titleDom.innerText; }); console.log(titleDomText2); } main(); 3.5 监听请求和响应 下面就来监听一下百度某一...await page1.goto('https://www.baidu.com'); } main(); 3.7 截图 截图是一个很有用的功能,通过截取就可以保存一份快照,方便后期问题的排查...(注:无头模式下进行截图,否则截的图可能有问题) async function main() { // 启动浏览器,访问页面的操作 // 截屏操作,使用Page.screenshot

1.3K50

用Node.js把HTML转成PDF格式

方案1: DOM 制作屏幕截图 方案2:仅使用 PDF 库 最终方案3:Node.js、Puppeteer 和 Headless Chrome 样式控制 将文件发送到客户端并保存 Docker...方案1: DOM 制作屏幕截图 乍一看,这个解决方案似乎是最简单的,事实证明的确是这样,但它有其自身的局限性。...此方法简单明了:页面创建屏幕截图,并把它放到 PDF 文件。非常直截了当。...它本质上是一个可以 Node.js 运行的浏览器。如果你读过它的文档,其中首先提到的就是你可以Puppeteer 来生成页面的截图和PDF。优秀!这正是我们想要的。...官方文档有疑难解答部分,你可以找到有关用 Docker 安装 puppeteer 的所有必要信息。 如果你 Alpine 镜像上安装 Puppeteer,请确保在看到页面的这一部分时再向下滚动一点。

6.4K30

AuthCov:Web认证覆盖扫描工具

特性 同时适用于单页面应用程序和传统的多页面应用程序 处理基于令牌和基于cookie的身份验证机制 生成HTML格式的深入报告 可以报告查看已爬取的各个页面的截图 安装 安装node 10。...saveResponses 布尔 API端点保存响应正文,以便你可以报告查看它们。 saveScreenshots 布尔 保存已抓取页面的浏览器屏幕截图,以便你可以报告查看它们。...xhrTimeout 整数 抓取每个页面时等待XHR请求完成的时间(秒)。 pageTimeout 整数 抓取时等待页面加载的时间(秒)。...配置登录 配置文件中有两种配置登录的方法: 使用默认登录机制,使用puppeteer指定的输入输入用户名和密码,然后单击指定的提交按钮。...这可以通过配置文件设置loginConfig选项来配置。你也可以查看此处的示例。

1.8K00

Puppeteer 入门与实战

首先想到的是调用该页面的api接口,接口中拿到对应的emoji地址然后遍历到本地文件。...await page.waitFor(3000) // 可以page.evaluate的回调函数访问浏览器对象,可以进行DOM操作 const emojis = await page.evaluate...三、Puppeteer Puppeteer可以做些什么呢?我们文章开始的一个demo可以发现,Puppeteer可以爬取页面数据。...除此之外,结合Headless Chrome的一些命令行,Puppeteer可以做到一下几点: 爬取页面数据 页面截屏或者生成PDF文件 前端自动化测试(模拟输入/点击/键盘行为) 捕获站点的时间线,分析网站性能问题...包括以下事件: load - 页面的load事件触发时 domcontentloaded - 页面的DOMContentLoaded事件触发时 networkidle0 - 不再有网络连接时触发(至少500

2K40

Chrome开发者工具的11个高级使用技巧

然后,我们可以就获得当前页面的完整屏幕截图了。 ? 上面的原始图像实际上非常清晰,只是在这里我上传了压缩图像以节省你的流量。...同样地,如果要截取某个 DOM 元素的屏幕截图,就完全可以使用系统自带的屏幕截图工具,但当窗口不能完全捕获该元素内容时,此时,你可以使用Capture node screenshot命令。... Chrome 开发者工具,我们可以使用“网络”面板下的Capture Screenshots功能来捕获页面加载时的屏幕截图。 ? 单击每个屏幕截图可以显示相应的当前时间的网络请求状态。...“元素”面板,你可以拖放任何 HTML 元素来更改其页面的显示位置: ? 上面的展示“元素”面板中将某个 div 的位置拖动到其他位置,它在网页上的展示位置就会同步更改。 9....(例如:hover,它可以让你知道当前鼠标是否某个元素内容之上)。

2.2K60

前端使用puppeteer 爬虫生成《React.js 小书》PDF并合并

puppeteer: Google 官方出品的 headless Chrome node 库 puppeteer github仓库 puppeteer API 官方介绍: 您可以浏览器手动执行的大多数操作都可以使用...生成页面的屏幕截图和 PDF。 抓取 SPA并生成预渲染内容(即“ SSR”)。 自动化表单提交, UI测试,键盘输入等。 创建最新的自动化测试环境。...从上面 React.js小书截图来看。 1、打开浏览器,进入目录,生成 0.React小书目录.pdf 2、跳转到 1.React.js简介页面,获取左侧所有的导航 a链接的 href,标题。...3.4 隐藏 传播一下知识也是一个很好的选择 这一个模块(因为页眉页脚设置了书的链接等信息,就隐藏这个了) 3.5 给 分页 上一节,下一节加上序号,便于查看。...小结 1、 puppeteer是 Google 官方出品的 headless Chrome node库,可以浏览器手动执行的大多数操作都可以使用 Puppeteer完成。

2.6K20

deno牌puppeteer,真香!

至于 Deno该如何使用 Puppeteer,如果您只是想简单运用,跟着Copy攻城狮的步伐就够了,如果您想深入了解,建议深入到源码中学习!...puppetter-deno 截图说起 deno puppetter puppeteer是一个Node库,它提供了高级API来通过DevTools协议控制Chrome或Chromium,puppeteer...puppeteer常常被用来生成页面的屏幕截图和PDF、实现SSR、自动化测试等等,在业界也有不少企业级的运用,比如有赞商城前端团队使用puppeteer搭建统一海报渲染服务,TCB 的云函数也支持 puppeteer...尝鲜 deno 版的puppetter Copy攻城狮的拿手本领当然是Copy啦,尝试了截图中那个issue下的demo之后,发现还是deno社区找到的puppeteer_deno好使。...mod.ts就能获取到如下结果,在当前目录生成juejin.png和juejin.pdf: puppetter_deno 获取掘金酱的个人成就 原本想从掘金的搜索入口入手,先从关键字搜索到用户列表,再从列表的用户链接跳转到个人

1.1K30

使用 Puppeteer 实现文件下载

目前比较火的是无头浏览器是 Google 的 Puppeteer,常用于自动化 UI 测试和截图Puppeteer 的文档非常详细,可以参考 Puppeteer API。...如果文件的任何内容发生了更改,则缓存将失效。 对于其他指令来说,只会简单比较一下指令有没有发生变化。 简单来说,我们可以利用 COPY 命令的缓存特性来实现跳过 npm install 命令。...实现 开始写代码之前,先思考一下去一个网站下载文件需要进过哪些步骤? 首先,我们打开网站登录,输入用户名和密码,点击登录按钮。...如果立即去执行 DOM 操作,就会出现页面还没有加载成功的情况。所幸 Puppeteer 提供给了 waitForNavigation 这个 API。...总结 Puppeteer 是一个非常强大的库,某些场景下会非常方便。等有时间的时候也可以去研究一下 Chrome DevTools 的原理。

2.4K10

实践指南-网页生成PDF

浏览器手动执行的大多数操作都可以使用 Puppeteer 完成,比如: 生成页面的屏幕截图和 PDF; 爬取 SPA 并生成预渲染的内容(即 SSR); 自动进行表单提交,UI 测试,键盘输入等;...从上可见,Puppeteer 可以实现在Node 端生成页面的 PDF 功能。 三、实现步骤 1. 安装— 进入项目,安装 puppeteer 到本地。...puppeteer 时,会下载与 API 一起使用的最新版本的 Chromium 浏览器,有以下方法可以修改默认设置,不下载浏览器: 环境变量[2]设置 PUPPETEER_SKIP_CHROMIUM_DOWNLOAD...小建议:本地调试时,建议设置 headless: false,可以启动完整版本的浏览器,直接在浏览器窗口查看内容。 3. 打开新页面— 生成浏览器后,浏览器打开新页面。...waitUntil 表示页面加载到什么程度可以开始生成 PDF 或其他操作了,当网页需加载的图片资源较多时,建议设置为 networkidle2,有以下值可选: load:当 load 事件触发时; domcontentloaded

2.4K41

如何 0 到 1 搭建性能检测系统(修正版)

聊性能指标之前,先讲一下 Lighthouse。 Lighthouse Lighthouse 是一个开源的自动化工具,用于分析和改善 Web 应用的质量。...百策的主要逻辑是服务端起一个无需显示的 Chrome,通过 Lighthouse 的 API 新建一个标签并打开,Lighthouse 会计算具体的性能指标,具体的检测逻辑可以参考下图。...{ browser, page }; } ○ 模拟登录 模拟登录的场景可以参考另一篇,自动化 Web 性能分析之 Puppeteer 爬虫实践的第四节,大致的实现逻辑如下:通过无头浏览器打开政采云登录...beforePass 的作用主要是页面还没加载前先注册一些监听器,比如说想在页面 load 之后,就拿到 DOM 节点的深度,那就需要在 beforePass 中注册监听。...判断框架是 Vue 还是 React 可以根据 DOM 是否包含 _reactRootContainer 和 __vue__ 来判断。

2.8K51

spa 如何达到ssr 的秒开技术方案——预渲染

预渲染 SPA(单应用)初次加载时,由于需要加载所有必要的 JavaScript 和 CSS 文件,以及应用的主 HTML 文件,因此可能会产生白屏时间较长的问题,对用户体验而言是非常糟糕的。...或 Chromium 来控制 Chrome 或 Chromium 的行为,用于测试、屏幕截图和数据爬取等。...Puppeteer 可以模拟人类的操作,比如点击、填充表单、下拉、切换页面、截图等,同时还可以拦截网络请求和处理 Cookies 等功能。...字体使用和优化 字体加载和优化是前端开发的一个重要问题,特别是移动端和低网络状况下。...,关于如何保证稳定性,我是从下面这几方面入手 可行性和风险评估 每次改动和优化代码之前,我会先对功能进行整体的回归一下,再查看对应的代码,查看代码的过程,我会确定几个事情 页面的功能是否存在多种业务逻辑判断的情况

39720

Puppeteer零出发,全面掌握浏览器自动化神器

; 捕获网站的时间线跟踪,帮助诊断性能问题; 测试 Chrome 扩展程序; 对页面截图和生成 PDF; 对 SPA 应用爬取并生成预渲染内容; 安装指引 Puppeteer v1.7.0+ 开始同时提供...浏览器管理: 入门示例已经使用过了启动和关闭浏览器的 API,这里主要了解一下浏览器上下文(包含权限)和如何连接到正在运行的浏览器两部分。...定位器: Puppeteer 推荐使用定位器 API 选择元素并与之交互,定位器 API 会等待元素 DOM 处于可操作的正确状态。...等待选择器: 等待选择器(waitForSelector)与定位器相比是一个较低级别的 API,允许等待元素 DOM 可用。...更多功能 屏幕截图: 要捕获屏幕截图可以使用: import puppeteer from 'puppeteer' (async () => { const browser = await puppeteer.launch

20410

使用 Puppeteer 搭建统一海报渲染服务

通俗的说就是提供了一些 API 用来控制浏览器的行为,比如打开网页、模拟输入、点击按钮、屏幕截图等操作,通过这些 API 可以完成很多有趣的事情,比如本文要讲的海报渲染服务,它用到的就是屏幕截图的功能。...二、Puppeteer 能做什么 Puppeteer 几乎能实现你能在浏览器上做的任何事情,比如: 生成页面的屏幕截图或 pdf 自动化提交表单、模拟键盘输入、自动化单元测试等 网站性能分析:可以抓取并跟踪网站的执行时间轴...其实整个流程还是比较简单的,当有一个绘制请求时,首先看之前是否已经绘制过相同的海报了,如果绘制过,就直接 Redis 里取出海报图片的 CDN 地址。...: load:默认值, load 事件触发就算成功 domcontentloaded: domcontentloaded 事件触发就算成功 networkidle0: 500ms 内没有网络连接时就算成功...还有就是看看能不能增加定时任务,凌晨机器比较闲的时候提前绘制好一些常用的海报,这样当需要海报时就是直接 redis 里取出来了,充分利用了机器的性能,也可以减少海报服务白天的压力。

1.4K20

干货 | 基于 BDD 理念的 UI 自动化测试携程度假的应用

层次上来说,BDD 是基于 TDD 的,或者说自动化测试,TDD 所在的位置比较底层,是基础,而 BDD 则是它的演进版本。 ?...BDD验证代码是否真正符合用户需求,因此 BDD 是从一个较高的视角来对验证系统是否和用户需求相符。 看到这里,大家肯能会对上面的理论知识有点蒙圈。那么让我们来看下 BDD 的交互过程: ?..."上海" Then 点击"搜索" And 验证搜索列表内包含"上海" 关于 Puppeteer 前面介绍了 Cucumber 这款 BDD 自动化测试工具,大家可以简单的理解为...通俗来说就是一个 Headless Chrome 浏览器(也可以配置成有 UI 界面的,默认启动的是一个没有界面的)。 Puppeteer 的结构图如下所示: ?...当然对于 Puppeteer 能做的远远不止这些,这里列举一些 Puppeteer 可以应用的场景: Puppeteer 可以作为高级爬虫使用 SEO 优化(抓取 SPA 单应用,并生成相应的预渲染内容返回

2.5K21
领券