介绍
Playwright是一个强大的Python库,仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,并同时支持以无头模式、有头模式运行。
项目地址:https://playwright.dev/docs/intro
我最喜欢的特点
- 浏览器上下文并行:对具有浏览器上下文的多个并行、隔离的执行环境,重用单个浏览器实例。
- 自动等待: Playwright 可以自动等待元素,这将会提高自动化的稳定性,简化测试的编写。
- 支持多个域、页面和表单: Palywright是一个 进程外(out-of-process) 自动化驱动程序,它不受页内JavaScript执行范围的限制,可以自动处理多个页面的场景。
- 覆盖所有场景的功能:支持文件下载、上传,进程外表单,输入、点击,甚至是手机上流行的暗黑模式。
- 测试移动端:通过设置驱动模式可以模拟移动浏览器的效果。
- 注入javasript脚本
效果
视频https://www.bilibili.com/video/av716217301/?zw
playwright自定义浏览器设备、时区、经纬度、userAgent、注入脚本
show me the code
基于nodejs
const { chromium , devices } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: false }); //设置设备 const pixel2 = devices['iPhone 6']; //设置指纹 const context = await browser.newContext({ ...pixel2, //语言 locale: 'de-DE', //时区 timezoneId: 'America/Adak', //经纬度 longitude: 29.979097, latitude: 31.134256, colorScheme: 'dark', //设置useragent userAgent: 'My user agent', //屏幕大小 viewport: { width: 1440, height: 768 } }); const page = await browser.newPage(); await page.goto('https://www.baidu.com'); //注入本地脚本 await page.evaluate(() => { var body = document.getElementsByTagName("body"); var iframe = document.createElement('iframe'); iframe.src="https://blog.csdn.net/huangmingleiluo"; iframe.style.cssText = 'top :300px; position:absolute;'; iframe.width = 1440; iframe.height = 300; document.body.appendChild(iframe); }); // await browser.close(); })();