彩世界开奖app官网-彩世界平台官方网址(彩票平台)
做最好的网站
来自 前端技术 2019-10-17 16:45 的文章
当前位置: 彩世界开奖app官网 > 前端技术 > 正文

【puppeteer Node.js】学习彩世界平台官方网址

谁维护puppeteer?

Chrome DevTools团队保护这么些库, 同不常间迎接我们的加入!

 

1、下载nodejs

网址: 注:小编使用的是二进制包 61人。解压后可径直利用

彩世界平台官方网址 1nodejs.png

调度技能

  1. 关闭无头方式 - 有的时候看到浏览器的显得是平价的. 使浏览器运维在全情势并不是无头方式下, 使用headless: false:
const browser = await puppeteer.launch({headless: false,})
  1. 慢下来 - slowMo 选项减慢puppeteer 实施进程, 减慢钦赐的总微秒数. 那是扶植观看发生怎么样的另三个路子.
const browser = await puppeteer.launch({
  headless: false,
  slowMo: 250 //减慢puppeteer 250ms
});
  1. 抓获调节台出口 - 监听console事件. 当调节和测量检验page.evaluate() 内部代码时相比便利.
page.on('console', msg => console.log('页面log', msg.text()));
await page.evaluate(() => console.log(`url is ${location.href}`))
  1. 悬停推行测量试验,在浏览器内使用debugger
  • 运行puppeteer时使用 {devtools: true}:
const browser = await puppeteer.launch({devtools: true});
  • 转移测验超时时间:
    • jest: jest.setTimeout(100000);
    • jasmine: jasmine.DEFAULT_TIME_INTERVAL = 100000;
    • mocha: this.timeout(100000); (改造测量试验时利用 function 不能够运用箭头函数)
  • 在evaluate内部采纳 debugger 语句, 在已存在的evaluate情形中增多 debugger
await page.evaluate(() => {
  debugger;
});

puppeteer测量试验将会终止在地点那条语句, chromium也将停留在 debugger 格局.

  1. 展开详细笔录 - 调用全部公共API 和中间传输合同将会被puppeteer命名空间下的 debug模块记录
# 基本的详细记录
 env DEBUG="puppeteer:*" node script.js

 # 调试输出可通过命名空间来开关
 env DEBUG="puppeteer:*,-puppeteer:protocol" node script.js # 记录除了协议信息的所有信息
 env DEBUG="puppeteer:session" node script.js # 记录会话协议(protocol messages)
 env DEBUG="puppeteer:mouse,puppeteer:keyboard" node script.js # 只记录鼠标和键盘API调用

 # 传输协议记录的比较繁杂. 下面例子过滤所有网络信息.
 env DEBUG="puppeteer:*" env DEBUG_COLORS=true node script.js 2>&1 | grep -v '"Network'

总括了一晃关于puppeteer的学习的网址,以往还有或者会延续立异

3、安装puppeteer模块。

Puppeteer是什么 Puppeteer 是多个Node库, 它提供高级API,通过DevTools Protocol 来决定Chrome 或 Chromium。 Puppeteer 默许运维为headless ,不过足以安插为运营为non-headless 。 能够做哪些 生成页面截图或PDF 抓取SPA 并生成预渲染内容

什么样使用puppeteer的超前版本?

npm i --save puppeteer@next

提示: 提前版本只怕不安宁和含有bugs.

Puppeteer 相符干些什么事?

  • 高级爬虫,可以爬取大量异步渲染内容的网页。爬取SPA应用,并生成预渲染内容(“SS瑞虎”服务端渲染)
  • 扶持创设新型的自动化测量检验情形(chrome),能够一向运营测量试验用例,前端自动化测验(表单操作、事件模拟、键盘输入… 等),模拟键盘输入、表单自动提交、登陆网页等,达成 UI 自动化测量检验
  • 改造网页截图大概 PDF
  • 抓获站点的年华线,以便追踪你的网址,援助分析网址品质难题
  • 从网址抓取内容

4、chromeium能够下载对应的chromium,应当要和本机的chrome浏览器版本相对应,也能够一向运用本机的chrome浏览器。

const puppeteer = require('puppeteer'); => { // chrome地址 const chromePath=process.argv[2] //传进的将要解析的url网址 const address=process.argv[3]; const browser = await puppeteer.launch({ignoreHTTPSErrors: true,headless: false,executablePath:chromePath,timeout:60000,args: ['--no-sandbox', '--disable-setuid-sandbox']}); // 打开新页面 const page = await browser.newPage(); //等待时间 var time=25000; // 访问 await page.goto(request_url, {waitUntil: 'domcontentloaded'}).catch(err => console.log; await page.waitFor; let content = await page.content() console.log; await browser.close;

试行命令:在cmd中实践 : nodejs路线 puppeteer路线 chrome浏览器路线

puppeteer能够做哪些

大多数在浏览器里手动推行的动作都得以经过puppeteer达成! 这里有多少个列子来令你起始.

  • 扭转页面截图和PDF.
  • 爬取单页面应用生成提前渲染的原委(比方 SSKoleos).
  • 自行提交表单, UI测量检验, 键盘输入等.
  • 创设新型的自动化的测量检验蒙受,在新型的 chrome 里使用 js 和浏览器的新型特性来运营你的测量试验.
  • 抓获网址的追踪时间线以帮扶会诊质量难点.

Chrome Headless情状须求

  1. Puppeteer须求node版本不低于v6.4.0,不过async/await只在Node v7.6.0或越来越高的本子支持。
  2. 内需近来版本的Chromium浏览器

 

官方API:

 

 

基础篇:

一、《Puppeteer 入门教程》

二、《使用puppeteer-autotest 来为cnodejs 做自动化测量试验.》附录:有连锁网址案例

三、《Puppeteer的入门和实践》

四、《puppeteer学习》

五、《Puppeteer 入门》(iframe)

 

基础 进阶:

《无头浏览器 Puppeteer 初探》、《Puppeteer 初探》

 

进阶篇:

一、《Puppeteer初探--爬取并生成《ES6正经入门》PDF》

二、《大前端神器安利之 Puppeteer》

三、《Puppeteer 初探从前端自动化测量试验》

四、《Making a Master Puppeteer》(成为二个Puppeteer大师)

 

参考:

1、在windows情状下安装,在命令提醒符中,输入指令:npm i --save puppeteer --ignore-scripts,就能够安装成功。

Example - 在页面上下文中执行js

保存为 get-dimensions.js

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');

  const dimensions = await page.evaluate(() => {
    return {
      width: document.documentElement.clientWidth,
      height: document.documentElement.clientHeight,
      deviceScaleFactor: window.devicePixelRatio
    }
  })
})()

实行如下命令 node get-dimensions.js, 查看Page.evaluate() API 获取有关evaluate和有关办法 (如:evaluateOnNewDocument, exposeFunction)的详实新闻.

puppeteer 介绍

Puppeteer是一个经过DevTools Protocol垄断headless chromium的尖端node库, 也可由此设置设置非headless Chromium.

Puppeteer有chrome官方团队开展保障, 相对于任何如PhantomJs, CasperJs 前景越来越好.

=============================================================================================

Puppeteer 是贰个node库,他提供了一组用来操纵Chrome的API, 通俗来讲便是一个 headless chrome浏览器 (当然你也足以配备成有UI的,暗中认可是未曾的)。既然是浏览器,那么我们手工业能够在浏览器上做的工作Puppeteer 都能独当一面, 此外,Puppeteer 翻译成粤语是”木偶”意思,所以听名字就明白,操纵起来很有益,你能够很有益的决定她去落实:

要是你用过 PhantomJS 的话,你会发觉她们有一些类似,但Puppeteer是Chrome官方团队开展有限支撑的,用俗话说正是”有婆家的人“,前景越来越好。

2、查看node版本音讯。

彩世界平台官方网址 2本子音讯.png

还大概有越来越多难点,到哪个地方寻求支援?

那边有无数有关puppeteer辅助的路线:

  • bugtracker
  • stackoverflowh
  • slack channel

担保在提交你的主题素材在此以前在这里些频道里搜索难题.

参考:

开始

Puppeteer是用来取代Selenium/webDriver的吗?

不是, 那三个品类因为一些见仁见智的因由都以有价值的.

  • Selenium/WebDriver 聚集于活动跨浏览器; 它的股票总值在于提供三个在享有主要浏览器里专门的工作的纯粹规范API.
  • Puppeteer 静心于Chromium;它的价值在于丰盛的效果与利益和高可相信性.
    约等于说,你能够应用puppeteer在非Chromium浏览器里运维测量检验. 比方使用community-driver jest-puppeteer. 固然puppeteer不是你独一可用的实施方案,但实在有几分比web Driver好的特征:
  • puppeteer 能够零装置,附带特定版本的chromium是其更加好的干活,puppeteer初叶选取特别轻便,在一天截止时只在chromium上运转多少个测量试验比不测验好.
  • puppeteer 是事件驱动架构, 移除大量暧昧薄弱环节. 无需在puppeteer脚本调用邪恶的"sleep(一千)"
  • puppeteer 私下认可运营在headless格局下,使得运营相当慢. puppeteer V1.5.0 也暴流露浏览器上下文, 使高效的并行施行测验成为恐怕.
  • puppeteer 在调试时高亮: 翻转headless位 false ,设置slowMo选项, 将会看出浏览器的行为. 以致足以张开Chrome DevTools来检查实验意况.

puppeteer

puppeteer 是多个因此DevTools 钻探提供高等API 来决定 chrome,chromium 的 NODE库; puppeteer暗中同意运营在 headless 情势, 也可配置后运营在全情势(non-headless).

例子

提示: puppeteer要求 Node V6.4.0及以上版本, 但以下例子中动用了在Node V7.60及以上版本中的 async/await .

利用过其余浏览器测量试验框架的人对puppeteer也会熟知. 创造Browser实列, 展开页面,然后利用puppeteer API操作页面.

Example - 导航到 截图后保存为example.png.

保留如下文件为 example.js

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});

  await browser.close();
})();

实施上面命令 node example.js

puppeteer 设置出时页面尺寸为 800 x 600px ,截图尺寸也是以此. 通过Page.setViewport() 设置本性化页面尺寸.

puppeteer的靶子和职分是怎么着?

这几个项目标靶子是:

  • 提供三个简练和权威的库以崛起 DevTools Protocol 的力量
  • 为左近的测量试验库提供完成参考. 最后此外框架能够选拔puppeteer作为基础层.
  • 腾飞利用 无头,自动化 浏览器测量试验.
  • 支援DevTools Protocol 新特征做 dogfood 测量检验, 捕获bug
  • 检索浏览器自动化测量试验的痛点, 然后扶植消除这个差异.

咱俩选用chromium义务来援助大家驱动产品做决定:

  • 快快: puppeteer在叁个自动化测量检验页面包车型地铁性情花费大约为0.
  • 康宁: puppeteer在 Chromium 操作进程中,自动使潜在的恶意页面安全.
  • 安宁: puppeteer不是薄弱的,也不会有内部存款和储蓄器泄漏
  • 轻巧易行: puppeteer 提供易用易通晓和调弄整理的尖端API.

API文档

【puppeteer Node.js】学习彩世界平台官方网址。研商API 文书档案和例子来读书越来越多.

【puppeteer Node.js】学习彩世界平台官方网址。深信的和不相信赖的输入事件有啥样差别?

在浏览器中输入事件被分为两大类: 信任的和不被信赖的.

  • 深信不疑事件: 通过页面包车型地铁顾客接口产生. 举个例子利用鼠标和键盘.
  • 非信赖事件: 通过web API发生. 譬如document.create伊芙nt 或许element.click() 方法.

网址能够区分这两类事件:

  • 使用 Event.isTrusted事件标识.
  • 嗅探伴随事件. 举个例子每二个可相信的点击事件以前都是'moussedown' 和'mouseup'事件.

为了自动化的目标, 生成可信事件是相比根本的. 通过puppeteer生成的输入事件都以可相信事件和接触适当的伴随事件.假如需求非信赖事件,供给通过page.evaluate 在页面上下文中生成模拟事件:

await page.evaluate(() => {
  document.querySelector('button[type=submit]').click();
})

安装

为了在你的档期的顺序里选用puppeteer, 实践:

npm i puppeteer
# 或者 yarn add puppeteer

唤醒: 安装puppeteer是,会下载最新版本的chromium(Mac下170 M, Windows下282M))以保障API不奇怪工作. 要跳过这一步,请参阅意况变量().

puppeteer不援救什么特点?

您也许会发觉当puppeteer调整包涵audio和video的页面时部分行事不是意料的.(比如, 录制播放时截图会失利), 那有以下七个原因:

  • Puppeteer 是和chromium绑定的,并不是chrome, 所以puppeteer承继了 chromium全数限制. 那象征puppeteer 不扶助部分许可格式举例: AAC和 H.264(可是也说不定强制puppeteer使用, 当 通过executablePath选项使用chrome替代chromium时. 唯有在合法发布的chrome支持那些媒体魄式时才干运用那一个安插)
  • 自从puppeteer调整chromium/chrome的桌面版后,只在四哥伦比亚大学版本里的chrome本性不被扶助. 那表示puppeteer不扶持 http Live Streaming(HLS).

运作时的暗许设置

  1. 行使无头浏览器情势(headless)

puppeteer 运转chromium 在headless形式下. 当运营浏览器时设置'headless' 选项使chromium运营在全方式下.

const browser = await puppeteer.launch({headless: false});
  1. 绑定特定版本的chromium

【puppeteer Node.js】学习彩世界平台官方网址。暗许情况下,puppeteer下载使用钦赐版本的 chromium 以确认保证具备的API平常工作. 创立Browser实例时钦定 executable帕特h值来以应用差异浏览器.

const browser = await puppeteer.launch({executablePath: '/path/to/Chrome'})

翻看puppeteer.launch() API精通越来越多信息.

阅读那篇作品了解chromium和 Chrome 的不同, 陈说了Chrome和 chromium 在Linux下的差异.

  1. 成立叁个新顾客

puppeteer每一趟运转时先成立三个 chromium 顾客, 运营停止后就排除客户音讯.

FAQ(常见难点)

如何是导航(navigation)?

在puppeteer观点中, '导航(navigation)' 是颇有改造页面UWranglerL的事物. 除了常规的导航外,在浏览器中式茶食击网络从web服务器中获得新文档, 包蕴a标签导航和history API

在这里个navigation定义中, puppeteer和单页面应用无缝衔接.

puppeteer使用哪个版本的 chromium?

在puppeteer相关版本的package.json文件里查看.

Example - 创建PDF

文本保留为hn.js

const puppeteer = require('puppeteer');
(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'});
  await page.pdf({path: 'hn.pdf', format: 'A4}');

  await browser.close();
})();

施行如下命令 node hn.js, 查看 Page.pdf() API 搜索越来越多关于创设PDF的音信.

为何puppeteer V.xxx 不能和Chromium V.yyy一起职业?

puppeteer作为 chromium 不可分割的一部分. 各个版本的puppeteer绑定于贰个一定版本的 chromium以管教 puppeteer职业.

着并非因而人为来约束,许多puppeteer专门的职业的确在 chromium 客栈里.下面时独立典故:

  • puppeteer bug报告
  • 那原本是DevTools protocol的 issue, 然后在chromium里修复
  • 当bug修复后,滚动更新chromium到 puppeteer

不过,平时大家更愿意将puppeteer 和合法的GoogleChrome一齐使用.这种景色下必要选取特定版本的puppeteer以使chromium版本附近chrome.

为puppeteer贡献

查看进献指南 以领悟puppeteer开垦概述

在测验情状中设置运转puppeteer时存在难题?

作者们有一份针对分化操作系统的排错指南须要列表.

本文由彩世界开奖app官网发布于前端技术,转载请注明出处:【puppeteer Node.js】学习彩世界平台官方网址

关键词: 软件测试 Node.js puppeteer 软件测