范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

PhantomJS出局!Puppeteervs。Playwright如何选择?

  大家好,很高兴又见面了,我是" 高级前端进阶 ",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
  高级前端进阶前言
  浏览器自动化并不是一项新技术, Selenium 自 2004 年以来一直存在,并且很长一段时间以来,它都是该类别的首选工具。 虽然 Selenium 的主要场景是为网站实施测试套件,但当网站不提供 API 时,程序员也可以将它用于屏幕截图或自动执行任务等。
  然而,Selenium 有时候并不可靠, Selenium 测试通常不稳定,比如:难以重现的原因导致间歇性失败。 Selenium 也相当占用资源,原因它通常用于运行完整的浏览器
  。
  因此,程序员在某些情况下开始使用无头浏览器。 这些浏览器完成了完整浏览器的大部分工作,但并不渲染 UI,比如 l 。无头浏览器可以很好地测试简单的网站,但要充分测试网站,需要支持各种网络标准来尽可能地模拟完整的浏览器。
  2017 年 PhantomJS 的作者弃用了它,原因是谷歌宣布推出 Headless Chrome,该浏览器首次在 Chrome 59 中可用。Firefox 在同一年晚些时候也推出了无头模式, 这些发展使得针对人们实际使用的相同浏览器编写高效的测试和脚本成为可能。 1 什么是 Playwright
  Playwright 是一个用于 Web 测试和自动化的框架。它允许使用单个 API 测试 Chromium、Firefox 和 WebKit。
  目前 playwright 在 Github 上有 48.9k 的 star、2.4k 的 fork、超过 24.5k 的项目依赖它,代码贡献者人数超过 380+。从 NPM 的使用数据来看,最近周下载量也达到了 1316k 左右,而且基本维持稳定。
  Playwright 是 puppeteer 的可行替代方案,同时 Playwright 具有以下显著特征: 任何浏览器 • 任何平台 • 一个 API跨浏览器:Playwright 支持所有现代渲染引擎,包括 Chromium、WebKit 、 Firefox。 跨平台:在 Windows、Linux 和 macOS 上进行本地测试或在 CI 上进行无/有头测试。 跨语言:在 TypeScript、JavaScript、Python、.NET、Java 中使用 Playwright API。 测试移动网络:适用于 Android 和 Mobile Safari 的 Google Chrome 浏览器的本机移动仿真, 相同的渲染引擎适用于桌面和云端。 弹性 • 保持测试稳定自动等待:Playwright 在执行动作之前等待元素可操作, 同时还具有一组丰富的内置事件。 两者的结合消除了人为超时的可能性,这是不稳定测试的主要原因。 Web 优先断言: Playwright 断言是专门为动态网络创建的,检查会自动重试,直到满足必要的条件。 追踪: 配置测试重试策略,捕获执行跟踪、视频、屏幕截图以消除薄片。 没有权衡 • 没有限制浏览器在不同进程中运行属于不同来源的 Web 内容:Playwright 与现代浏览器架构保持一致,并在进程外运行测试。 这使得 Playwright 摆脱了典型的进程内测试运行器的限制。 Multiple everything: 跨多个选项卡、多个来源和多个用户的测试场景。 为不同的用户创建具有不同上下文的场景,并在服务器上运行它们,所有这些都在一次测试中完成。 可信事件:悬停元素,与动态控件交互,产生可信事件。 Playwright 使用与真实用户无法区分的真实浏览器输入管道。 测试框架,穿透 Shadow DOM: Playwright 选择器穿透影子 DOM 并允许无缝地输入帧。 完全隔离 • 快速执行浏览器上下文: Playwright 为每个测试创建一个浏览器上下文, 浏览器上下文相当于一个全新的浏览器配置文件。 这提供了零开销的完全测试隔离,创建一个新的浏览器上下文只需要几毫秒。 登录一次: 保存上下文的身份验证状态并在所有测试中重用它, 这绕过了每个测试中的重复登录操作,但提供了独立测试的完全隔离。 强大的工具代码生成器: 通过记录操作来生成测试, 允许将测试结果保存为任何语言。 Playwright 检测: 检查页面、生成选择器、逐步执行测试、查看点击、探索执行日志。 跟踪查看器: 捕获所有信息以调查测试失败原因, Playwright 跟踪包含测试执行截屏、实时 DOM 快照、动作资源管理器、测试源等等。 2.如何使用 Playwright
  下面代码片段导航到 whatsmyuseragent.org 并保存屏幕截图。 import { test } from "@playwright/test"; test("Page Screenshot", async ({ page }) => {   await page.goto("http://whatsmyuseragent.org/");   await page.screenshot({ path: `example.png` }); });
  下面代码段在给定地理位置的设备上模拟 Mobile Safari,导航到 maps.google.com,执行操作并截取屏幕截图。 import { test, devices } from "@playwright/test";  test.use({   ...devices["iPhone 13 Pro"],   locale: "en-US",   geolocation: { longitude: 12.492507, latitude: 41.889938 },   permissions: ["geolocation"], });  test("Mobile and geolocation", async ({ page }) => {   await page.goto("https://maps.google.com");   await page.locator("text="Your location"").click();   await page.waitForRequest(/.*preview/pwa/);   await page.screenshot({ path: "colosseum-iphone.png" }); });
  下面代码片段导航到 example.com,并在页面上下文中执行脚本。 import { test } from "@playwright/test";  test("Evaluate in browser context", async ({ page }) => {   await page.goto("https://www.example.com/");   const dimensions = await page.evaluate(() => {     return {       width: document.documentElement.clientWidth,       height: document.documentElement.clientHeight,       deviceScaleFactor: window.devicePixelRatio,     };   });   console.log(dimensions); });
  下面代码片段为页面设置请求路由以记录所有网络请求。 import { test } from "@playwright/test";  test("Intercept network requests", async ({ page }) => {   // Log and continue all network requests   await page.route("**", (route) => {     console.log(route.request().url());     route.continue();   });   await page.goto("http://todomvc.com"); });
  值得注意的是,Playwright 具有强大的浏览器上下文功能,可让开发者使用单个浏览器实例模拟多个设备。 const { chromium, devices } = require("playwright");  (async () => {   const browser = await chromium.launch();   for (const deviceName of ["iPhone 11", "iPad Pro 11"]) {     const context = await browser.newContext({       ...devices[deviceName],     });     const page = await context.newPage();     await page.goto("http://github.com");     await page.screenshot({       path: `github-${deviceName.replace(/ /g, "-")}.png`,     });   }   await browser.close(); })();
  每个浏览器上下文在 cookie、本地存储等方面都与其他上下文隔离,每个上下文也可以在其下有多个页面。 3. Playwright 和 Puppeteer 优劣势3.1 Playwright 优与劣势
  Playwright 具有以下显著优势: 通过单个 API,Playwright 允许开发者使用 Chromium、Firefox 或 WebKit 进行测试。 除此之外,跨平台框架在 Windows、Linux 和 MacOS 中运行速度很快。 Playwright 支持 Python、Golang、Java、JavaScript 和 C#。 Playwright 比大多数测试框架(如 Cypress)运行得更快。
  同时 Playwright 还支持通过 Headless(这决定了是否在测试期间看到浏览器)、SlowMo(缓慢的移动降低了页面上动作之间的切换速度)、DevTools(在启动目标页面时打开 Chrome Dev Tools) 三种浏览器选项和页面方法控制测试环境。 await playwright.chromium.launch({ devtools: true });
  当然,除了以上的优势外,Playwright 也有自己的一些劣势,比如: Playwright 缺乏对 Ruby 和 Java 的支持。 Playwright 使用桌面浏览器来模拟移动设备,而不是真实的设备。 3.2 Puppeteer 优与劣势
  Puppeteer 是 JavaScript (Node.js) 的自动化库,与 Playwright 不同,Puppeteer 默认下载并使用 Chromium。它更侧重于 Chrome DevTools,使其成为网络抓取的首选库之一。
  Puppeteer 的主要优势包括: Puppeteer 简化了浏览器自动化的入门,它使用非标准的 DevTools 协议控制 Chrome。
  当然 Puppeteer 也有其自身的一些不足。比如: Puppeteer 仅支持 JavaScript (Node.js), 虽然对 Firefox 支持的开发正在进行中,但 Puppeteer 目前仅支持 Chromium。
  大多数 Playwright 的浏览器选项(如:headless、slowMo 和 devtools)都可以在 Puppeteer 中直接使用。 await puppeteer.launch({ headless: false, slowMo: 500, devtools: true });4.Playwright vs. Puppeteer 对比4.1 Playwright 的开发者数据对比
  从 Github 数据来看,两者都是非常优秀的库,虽然目前 puppeteer(82.4k)的 star 领先于 playwright(49k),但是考虑到 playwright 的项目周期比 puppeteer 要短,两者的差距也在明显缩小。
  从 NPM 的下载数据来看,playwright 的周下载量 1388k,而 puppeteer 为 3431k,考虑到 playwright 支持了多语言,NPM 统计数据可能只是一方面。 4.2 Playwright 和 Puppeteer 差异4.2.1 Playwright 语言和浏览器支持更广泛
  Puppeteer 和 Playwright 都是无头浏览器,最初设计用于 Web 应用程序的端到端自动化测试。 它们也可以被用于其他目的,例如网页抓取。 尽管具有相似的用例,但两种自动化工具之间存在一些关键差异,其中包括: Playwright 支持 Python、Golang、Java、JavaScript 和 C#,而 Puppeteer 仅支持 JavaScript,尽管有 Python 的非官方端口。 Playwright 支持三种浏览器:Chromium、Firefox 或 WebKit, 而 Puppeteer 仅支持 Chromium。 4.2.2 Playwright 比 Puppeteer 更好么
  对于 Puppeteer 与 Playwright 之间哪个选项更好,没有直接的答案,因为它取决于多种因素,例如:长期库支持、跨浏览器支持以及对浏览器自动化的特定需求。
  以下是 Playwright 和 Puppeteer 的一些显著特征:
  Web 爬虫的一个常见问题是,某些网站检测到机器人会阻止无头浏览,尤其是当单击按钮并快速发送多个流量时,一种可行的解决方案是在后续操作之前引入计时器。
  例如,可以对 Puppeteer 进行编程以模仿(人类)用户,方法是在登录表单中输入详细信息后等待 0.1 秒再单击按钮。 然而,多个计时器的缺点是它们会减慢浏览速度,而且大多数网站甚至可以检测到它们。
  ZenRows API 完美地解决了这个问题,它可以为开发者处理所有的反机器人和验证码绕过,而这只是它的一小部分能力,关于 ZenRows 可以参考文末资料。 5.本文总结
  本文主要和大家介绍 PhantomJS 的替代品 Playwright,同时和 Puppeteer 进行了简单对比,比如两者的优缺点。因为篇幅有限,文章并没有过多展开,如果有兴趣,文末的参考资料提供了优秀文档以供学习。最后,欢迎大家点赞、评论、转发、收藏!参考资料
  https://www.zenrows.com/
  https://www.zenrows.com/blog/playwright-vs-puppeteer#puppeteer
  https://blog.logrocket.com/playwright-vs-puppeteer/
  https://github.com/microsoft/playwright
  https://www.zenrows.com/blog/playwright-vs-puppeteer#is-playwright-better-than-puppeteer
  https://github.com/puppeteer/puppeteer

里奇保罗爆红,只有1。7米却恋上歌坛天后,频繁在詹皇面前秀恩爱134118,湖人队以16分优势大胜老鹰队,取得4连胜的同时,战绩排名也来到西部第六。湖人队只断断续续打了不到半个月的好球,如今战绩已经比西部大多数球队更好,确实很厉害。其实,湖人判若两队!欧文缺阵篮网主场比赛,篮网再负雄鹿,杜兰特独木难支这是一个自从欧文缺阵就会提到的话题,关键时刻,篮网只有杜兰特和欧文可以攻坚,欧文缺阵的情况下,杜兰特一旦被锁死,篮网就会陷入困境。毫无疑问,篮网队目前的状况,他们有欧文和缺少欧文,骁龙87012GB256GB曲面屏,跌至2449元,发布价高达3799元熟悉手机市场的朋友都应该知道,今年2021年发布的手机,是有史以来最划算最值得入手的手机,以后就不值得,但是迄今为止就是如此。在2021年之前,无论是高通,还是联发科发布的高端芯片DOTA2HY冬邀赛继续进行,maybe操刀刷新蓝猫打爆XG目前HY冬邀赛正在如火如荼地进行当中,这项赛事被外界认为是DPCS级联赛之前的一个热身赛,参加本次赛事的队伍就包括了VGXGMAGMATNC以及SMG等一流强队。在看到参赛阵容之后最终幻想16制作人致歉新情报推迟至2022年春发布信件具体内容也就是说,我们在2021花了大部分的时间来解决这个问题,并希望到新的一年,将其影响降至最低。这样才能使我们能够更好地集中精力完成手头上的任务,例如提高图形资源质量,改进口腔科王维主任频繁口臭的原因是什么呢生活中很多人都会有口臭。与人交流时口臭是一种非常尴尬的现象。我们应该及时了解口臭的成因,然后进行有针对性的调理,从而从根本上解决口臭问题。那么,频繁口臭的原因是什么呢?1。口腔卫生如何保养胃黏膜?做好这6件事,胃部更健康胃部是重要的消化器官,只有胃部保持正常的消化和吸收功能,身体各个器官才能够得到充分的营养供应。如果胃部的抵抗力比较差,而且很容易出现各种不适感,比如胃胀胃痛等等,因此则要对胃黏膜进十年新会陈皮时间给予的珍品,醇香甘甜新会陈皮是选用新会当地特有茶枝柑皮制作陈化而成。新会陈皮药效品质佳,越陈久越醇香,药用价值也更高,这种特性仅有新会产的陈皮才有!一两陈皮一两金,百年陈皮胜黄金。陈化时间长达十年的新4个中成药,舒肝理气和胃止痛温中健脾,辩证用于胃痛胃脘痛俗称胃痛,常伴有上腹胀纳呆恶心呕吐嘈杂反酸嗳气等症状。多种上消化道疾病(如消化性溃疡慢性胃炎功能性消化不良等)均可见胃脘痛症状。胃脘痛发病病机为不通则痛,治疗上多用通法,使脾爱喝汽水的人注意了!喝汽水必须要知道的危害相信大家都喝过汽水,虽然每当夏日炎炎,浑身是汗的时候,喝下一瓶冰汽水简直是再好不过的事情了,但是经常喝汽水可不是一件好事,相信有一些读者是汽水爱好者,那么接下来就由我来给大家提醒一老佛爷喜中有忧!神锋复出帮助皇马触底反弹,姆巴佩却会影响续约联赛第19轮,皇马在新年首战中遭遇滑铁卢,客场以01的比分输给了赫塔菲,联赛争冠的形势一下子就重新变得复杂起来,虽然巴萨和马竞暂时还没有太大的威胁力,但是塞维利亚还是给安切洛蒂带来热血传奇传奇游戏里的幸运和诅咒哪个好?传奇游戏里的设定还是很经典,很多元素对未来的游戏都产生了一定的影响力。现在RPG角色扮演的职业很多都是模仿传奇,传奇让我们更纠结的还是幸运和诅咒这两个设定。传奇游戏攻击的时候有上限使命召唤战区惊现充钱变强皮肤可以让你隐身使命召唤战区出现充钱就能变强的皮肤。据外媒报道,实际上这款皮肤已经售卖了2个星期了,可以让玩家隐身,非常毁游戏体验,但至今仍然没有被修复。实际上,这个Tier100干员皮肤Awok战神4PC版现身CES2022实机视频分享在2022国际消费电子展上,英伟达发布了战神4PC版的一段实机视频。这段视频展示了Nvidia的Reflex技术,战神4将支持Reflex和DLSS及AMDFSR。战神4版将支持原LOL三套新皮肤放出,水晶玫瑰持续拉胯,青花瓷和爆竹诚意满满最近这段时间拳头对英雄联盟的动作比较少,不仅是版本更新的内容少了,连带着皮肤的预告也少了很多。不过毕竟去年他们的皮肤计划已经超额完成了,这几天混一混倒是可以理解。而就在不久前,这种张嘉倪到底长得多精致?穿上抹胸纱裙,二次元里的人偶都比不过她张嘉倪刚出道的时分,颜值就非常在线了,她是那种出发点非常高,不过后续资源连续没跟上来,奇迹心不是非常重那种,中心乃至还结了婚生了子,不过没想到从新复出以后,颜值更上一层楼,光阴公然小身材大音量,摇滚加林炮SanagM11蓝牙音箱上手体验经常与家人或者朋友一起到户外游玩,在需要一起听音乐的时候,会发现只是用手机外放根本无法解决氛围问题,而且由于手机外放的限制还会让好听的音乐变得寡淡无味。这个时间就必须要上手一个便携小米12Pro评测让精致更进一步全线拉满的性能旗舰2021年12月28日,小米给广大消费者带来了小米12系列手机,这个系列一共有三款机型,分别是小米12X小米12和小米12Pro。就小芳个人而言,我是更加喜欢小米12Pro这款手机49岁邓亚萍现身小餐馆!妆容精致涂大红唇,嗦面条动作接地气近日,奥运冠军邓亚萍现身小餐馆吃面,非常接地气。她说自己刚刚工作完在上海,赶飞机之前吃碗牛肚面。只见她的发型非常有设计感,显然是刚刚工作的时候好好地打理过。而她的脸上也画着精致的妆12分4帽!首钢混血中锋大爆发能力不输范子铭秦晓雯成高塔专业户10576,北京首钢以29分的巨大优势战胜吉林男篮,本场比赛首钢队可谓全队爆发,12名球员都获得了出场机会,并且都有得分进账。本场比赛首钢队得分最多的吉布森也仅仅只有17分,虽然五KPL决赛语音曝光花海关键指挥功不可没,他到底配不配FMVP?王者荣耀2021KPL秋季赛已经结束,现在王者荣耀电竞圈已经进入了挑战者杯的比赛节奏。但是当我们回顾起2021年KPL秋季赛总决赛时,讨论度最高的,可能不是武汉eStarPro夺冠郝蕾穿出微胖美精髓,穿西装配泡面头优雅精致,发福却不油腻俗话说,微胖才有福,但当今的流行审美,都是以瘦为美,这也导致了很多小姐姐都有一定程度上的身材焦虑,每天盯着体重秤上的数字发愁,为自己的饮食后悔不及。但是抛开别人的眼光,真真正正审视
炖排骨汤,调料越多越难喝,只加3种料,汤白味鲜,肉软烂无腥味炖排骨汤,调料越多越难喝,只加3种料,汤白味鲜,肉软烂无腥味夏天是多么漫长呀,每年的高温天气,至少要持续45个月,直到10月份才会凉下来。天气热出汗多,家人胃口都不好,我会经常炖一想拥有一头健康的秀发,洗护专业知识学起来洗护专业知识分享会头发的基础理论一头发知识1头发数量1015万根2成长速度约1。21。8厘米每月3平均寿命约26年4自然脱发50100根每天5含水率1116,特征弹性坚韧柔顺6毛发70后的女人要远离奶奶装,学这位神仙博主,年纪大了也能美得优雅这么穿减龄这么穿显气质这么穿显高级年龄的增长并不可怕,可怕的是心态不好,一个真正有品味的女人,她的心态一定是极好的。在平时生活中注重了穿衣打扮必然会让心情变得更好,也能够让你的外在钟丽缇同框婆婆不收敛!穿吊带与老公腻歪,大10岁婆婆打扮像奶奶女性的穿衣风格丰富多彩,不同的年龄阶段有着专属的魅力,在搭配这方面也会向专属魅力靠拢,散发出迷人的魅力。钟丽缇的穿搭一直都很大的造型千变万化,较为丰满的身材并没有影响她的穿搭风格。8球2助攻!20岁葡超天才神锋横空出世标价4000万欧4大豪强哄抢最近几年,葡萄牙足球人才辈出,特别是在葡超联赛上,更是如雨后春笋般诞生了一个个天赋异禀的天才帝星。刚刚过去的一个赛季,在葡超豪门本菲卡队,又横空出世了一位年仅20岁的锋线天才之星,安德森我一生都在等待这一刻如果没有戒指就不要和我说话直播吧6月21日讯勇士队今日进行冠军游行,安德森接受了采访。谈到此次夺冠时,安德森笑着说我一生都在等待这一刻,我正处于职业生涯的边缘,你知道吗?别人会对我说什么?我不在乎别人说我什21年后再看程菲,退役后体重暴涨90斤,背后到底有多少艰辛?21年后再看程菲,退役后体重暴涨90斤,背后到底有多少艰辛?程菲是中国体操跳马皇后,她曾为中国拿到了9个世界冠军,还创造了国际体坛声名显赫的程菲跳,她是世界上唯一一个体操满分冠军,11北京时间6月21日凌晨,2022年国际乒联WTT支线赛奥托塞克站资格赛开赛。混合双打资格赛,中国小将陈垣宇陈熠,在与队友曾蓓勋韩菲儿的德比战中,31获胜晋级资格赛第二轮。而两对日本郝伟告诉谢晖,山东泰山与大连的比赛结果对中超的走向影响很大郝伟告诉谢晖,山东泰山与大连队的比赛结果对中超今后的走向影响很大,这是因为俱乐部管理层更看重的是主教练带队的成绩,不是球队的战术是否富有激情。如果大连队能够战胜山东泰山,或者逼平山森林狼篮网探讨杜兰特交易,可能与唐斯拉塞尔互换库里蛰伏三年,几经波折,陪伴球队从低谷走向巅峰,八年四冠,直到捧起FMVP奖杯。曾经令联盟闻风丧胆的勇士,再一次展现在人们面前,勇士再次成为所有球队必须跨过的大山。勇士现在兵强将广李盈莹对角之奇思妙想,龚翔宇或可改变现状,该放弃王云蕗金烨随着世联赛菲律宾战比赛的结束,中国女排以2胜2负结束此分站的比赛,03输美国13输日本,都是令众多球迷意难平,而中国女排输的这2场球,一方面是副攻表现不佳,另一方面则是李盈莹对角真