paint-brush
最新更新后如何充分利用 Playwright经过@brightdata
1,911 讀數
1,911 讀數

最新更新后如何充分利用 Playwright

经过 Bright Data5m2023/12/17
Read on Terminal Reader

太長; 讀書

你猜怎么了?微软刚刚发布了新版本的 Playwright!跟上错误修复和 API 更改感觉就像是全职工作,错过一些很酷的功能也很容易。但不用担心,我们会为您提供支持!我们随时帮助您掌握最新动态,学习一些新技巧,并用您出色的技能让您的同事惊叹不已!准备好潜入了吗?我们走吧!
featured image - 最新更新后如何充分利用 Playwright
Bright Data HackerNoon profile picture
0-item
1-item
2-item
3-item
4-item


你猜怎么了?微软刚刚发布了新版本的Playwright !跟上错误修复和 API 更改感觉像是一项全职工作,错过一些很酷的功能也很容易。但不用担心;我们支持你!


加入我们,了解最新的剧作家更新。我们随时帮助您掌握最新动态,学习一些新技巧,并用您出色的技能让您的同事惊叹不已!准备好潜入了吗?我们走吧!


剧作家最新更新 (v1.04)

如果您渴望通过一些精彩示例来第一手了解最新的 Playwright 更新,请前往Playwright YouTube 频道并观看每月的“Playwright 最新动态”视频:

是时候探索 Playwright 中引入的最新功能并了解如何充分利用它们了🔍

新API

  • FirefoxUserPrefs字段添加到browserType.launchPersistentContext(userDataDir, options)options对象参数中。该方法使用位于userDataDir的持久存储启动浏览器并返回浏览器上下文实例。 firefoxUserPrefs `是一个对象,包含在about:config中指定的 Firefox 用户首选项。
  • reason字段添加到page.close(options)browserContext.close(options)browser.close(options)方法的options对象参数中。 reason是一个字符串,其中包含因close()调用而中断的所有操作所报告的错误消息。


虽然firefoxUserPrefs专门满足需要自定义配置的 Firefox 用户,但reason字段的用途更为通用。像下面的代码片段一样使用它:


 await browser.close({ reason: "Scraping process completed!" })


所有被browser.close()中断的挂起操作现在都会抛出一个 JavaScript 错误,并显示消息“抓取过程已完成!”


如何使用这个功能?想象一下您的目标页面正在执行一项关键任务 - 比方说,正在等待检索一些数据。突然,弹出一个意外错误,您需要优雅地关闭浏览器。


如果没有reason ,您就会对正在进行的任务的资源是否已被释放以及操作为何被中断一无所知。不知道发生了什么是不好的,尤其是当您的任务是检查自动网络抓取脚本日志中的错误原因时。这就是“原因”字段为您提供帮助的地方,为您节省数天的艰苦调查时间。


太棒了,这个 API 介绍让调试变得更加容易! 🚀

测试生成器工具的新功能

Playwright 测试生成器工具旨在当您在浏览器中执行操作时自动创建测试,现在提供以下按钮:


  • 断言可见性:通过生成expect(locator).toBeVisible()指令来验证所选元素是否可见。
  • 断言文本:通过expect(locator).toContainText()指令确保所选的HTML元素包含特定文本
  • 断言值:通过在测试中添加expect(locator).toHaveValue()指令来检查 select 元素是否具有特定值。


想象一下:您正在处理一项复杂的任务,例如为动态网页构建网络抓取工具。假设您需要确保页面上的某些元素可见并包含特定文本或值。这会涉及一些复杂的逻辑👎。但是请稍等,感谢这个新的更新,这一切都可以归结为在测试生成器工具中单击几下!


请在下面的 GIF 中查看这一新功能的实际应用:


PlaywrightTest 生成器工具


该测试生成器交互将为您生成以下 TypeScript 测试:


 import { test, expect } from '@playwright/test'; test('test', async ({ page }) => { await page.goto('https://playwright.dev/'); await expect(page.getByRole('banner')).toContainText('Get started'); });

✨ 很神奇,不是吗? ✨

更新的浏览器版本

按照 Playwright 主要更新的宏伟传统,支持的浏览器阵容已更新为新版本:

  • 铬120.0.6099.28
  • 火狐浏览器 119.0
  • 网络工具包 17.4


但这还不是全部!事实证明,当前版本的 Playwright 在以下稳定渠道中表现出色:

  • 谷歌浏览器 119

  • 微软边缘 119


其他细微变化

  • download.path()download.createReadStream()方法现在在下载操作失败或被取消时抛出错误。

  • Playwright docker 镜像现在附带 Node.js v20。


不想错过任何新的更新?请密切关注剧作家发行说明页面!

如何更新剧作家

现在,您一定在想:“我怎样才能获得这些出色的新功能呢?”好吧,将 Playwright 更新到最新版本,我的朋友!


只需启动以下命令:

npm install @playwright/test@latest

并且忘记使用以下方式升级浏览器实例:

npx playwright install


瞧!您已准备好获取最新的剧作家更新!

新剧作家,同样的老问题......

无论您的 Playwright 版本有多新,大多数网站仍然能够检测并阻止您的自动化脚本。但这怎么可能呢?嗯,由 Playwright 等库控制的无头浏览器涉及特殊的配置和设置,这些配置和设置被反机器人解决方案视为危险信号。结果呢?立即阻止或出现不受欢迎的验证码和其他讨厌的障碍


现在,您可能会想,“我不能调整浏览器设置来避免这种情况吗?”


别那么快啊,孩子!出于至少三个令人信服的原因,这不是一个好主意:


  1. 这是一场永无休止的猫鼠游戏——反机器人措施不断发展,今天的解决方案到明天就会成为旧闻。
  2. 即使使用最灵活的浏览器配置,来自同一 IP 的过多请求仍然可能会引起目标站点的怀疑。
  3. 表单提交等用户交互可能需要验证码解决,这不是在公园散步就能实现自动化!


问题不在于浏览器自动化库本身(Playwright 太棒了!🤘),而在于浏览器受到控制。解决方案将是一个高度可定制的浏览器,它:


  • 像普通浏览器一样以 head 模式运行,以避免机器人检测。
  • 可以轻松扩展到云,以节省您在基础设施管理方面的时间和金钱。
  • 提供由市场上最广泛、最可靠的代理网络之一支持的轮换 IP
  • 可以自动管理验证码解决、浏览器指纹识别、cookie 和标头自定义以及自动重试,以实现最大效率。
  • 与最流行的浏览器自动化库集成,例如 Playwright、Selenium 和 Puppeteer


不管你信不信,这并不是遥远的海市蜃楼。这是真实的,这正是Bright Data 的抓取浏览器解决方案的全部内容!


最后的想法

Playwright 是浏览器自动化库的摇滚明星,就像圣诞老人在平安夜送礼物一样,微软每个月都会发布一个重大的新更新。在这里,您已经了解了如何充分利用最新的 Playwright 更新,但让我们面对现实吧,它们不会神奇地让您对具有先进机器人检测技术的网站隐形。


使用Bright Data的抓取浏览器解决方案来躲避子弹,并加入我们的使命,让互联网成为每个人、任何地方的公共场所,甚至通过自动化脚本!


直到下一次,继续自由地探索网络!