image.png

介绍

Playwright是一个Node.js库,通过单一API实现Chromium、Firefox和WebKit的自动化。Playwright的建立是为了实现跨浏览器的网络自动化,它是永远绿色的、有能力的、可靠的和快速的。

仓库:https://github.com/microsoft/playwright
官网:https://playwright.dev/

这是一个跨端的库,在windows、linux、macos,都可以使用。

如何安装请看完档。

例子

直接上例子: https://playwright.dev/docs/intro#first-test

  1. import { test, expect } from '@playwright/test';
  2. import { chromium } from 'playwright'
  3. import path from "path"
  4. let all = [
  5. {
  6. "link": "https://baidu.com",
  7. "title": "baidu"
  8. },
  9. ]
  10. for (let item of all) {
  11. test(`save ${item.title}`, async () => {
  12. const web = await chromium.launch(
  13. // { headless: false } // 是否出现浏览器
  14. {
  15. proxy: {
  16. // server: 'socks5://127.0.0.1:1080', // 代理
  17. // username: 'usr',
  18. // password: 'pwd'
  19. }
  20. }
  21. );
  22. const context = await web.newContext({
  23. javaScriptEnabled: false
  24. });
  25. const newpage = await context.newPage();
  26. await newpage.goto(`${item.link}`, {
  27. referer: "",
  28. // timeout: 30,
  29. waitUntil: "load"
  30. });
  31. await newpage.emulateMedia({ media: 'screen' });
  32. await newpage.pdf({ path: path.resolve(__dirname, `./pdf/${item.title}.pdf`) });
  33. })
  34. }

这是一个,将整个网页截图的脚本。
当然Playwright不止这么用,可以对网页应用进行跑在浏览器中的测试。

  1. import { test, expect } from '@playwright/test';
  2. test('basic test', async ({ page }) => {
  3. await page.goto('https://playwright.dev/');
  4. const name = await page.innerText('.navbar__title');
  5. expect(name).toBe('Playwright');
  6. });

结尾

十分推荐这个测试,集成度很高,基本上浏览器应用想测试的部分都能测试的到。
我这个库HTMLParser 就使用到了playwright,来测试我解析的DOM结构和浏览器是否一致。