Playwright 是一个用于 Web 测试和自动化的框架,可通过单个 API 实现 Chromium 、Firefox 和 WebKit 浏览器的自动化操作。
它旨在实现强大、可靠且快速的跨浏览器 Web 自动化,支持 Linux、Mac 以及 Windows 操作系统。
Playwright 的特点
-
Playwright 支持当前所有主流浏览器
-
Playwright 支持移动端页面测试
-
Playwright 支持所有浏览器的 Headless 模式和非 Headless 模式的测试
-
Playwright 的安装和配置非常简单
-
Playwright 提供了自动等待相关的 API
初体验
库的安装
可以直接使用 pip 来进行安装。注意,要确保你的 python 版本大于 3.7
pip install playwright
安装完成之后需要进行初始化操作。
playwright install
这时候 Playwrigth 会安装 Chromium,Firefox 和 WebKit 浏览器并配置一些驱动,我们不必关心中间配置的过程,Playwright 会为我们配置好。
基本操作
Playwright 支持同步与异步两种模式。
我们先来看一个基本同步模式的例子。
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser_type = p.chromium
browser = browser_type.launch()
page = browser.new_page()
page.goto('https://www.baidu.com')
page.screenshot(path=f'screenshot-{browser_type.name}.png')
print(page.title())
browser.close()
运行此代码,会启动谷歌浏览器并加载百度首页,页面加载完成之后,生成截图,然后输出页面的标题。
Playwright 还提供了异步的 API,如果我们项目里面使用了 asyncio,那就应该使用异步模式,写法如下所示。
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser_type = p.chromium
browser = await browser_type.launch()
page = await browser.new_page()
await page.goto('https://www.baidu.com')
await page.screenshot(path=f'screenshot-{browser_type.name}.png')
print(await page.title())
await browser.close()
asyncio.run(main())
可以看到整个写法和同步模式基本类似。更多功能期待大家去探索。
来源—–小寒聊python