Playwright 是微软在 2020 年初开源的新一代自动化测试工具,它的功能类似于 Selenium、Pyppeteer 等,都可以驱动浏览器进行各种自动化操作。它的功能也非常强大,对市面上的主流浏览器都提供了支持,API 功能简洁又强大。虽然诞生比较晚,但是现在发展得非常火热。
因为 Playwright 是一个类似 Selenium 一样可以支持网页页面渲染的工具,再加上其强大又简洁的 API,Playwright 同时也可以作为网络爬虫的一个爬取利器。
1. Playwright 的特点
Playwright 支持当前所有主流浏览器,包括 Chrome 和 Edge(基于 Chromium)、Firefox、Safari(基于 WebKit) ,提供完善的自动化控制的 API。
Playwright 支持移动端页面测试,使用设备模拟技术可以使我们在移动 Web 浏览器中测试响应式 Web 应用程序。
Playwright 支持所有浏览器的 Headless 模式和非 Headless 模式的测试。
Playwright 的安装和配置非常简单,安装过程中会自动安装对应的浏览器和驱动,不需要额外配置 WebDriver 等。
Playwright 提供了自动等待相关的 API,当页面加载的时候会自动等待对应的节点加载,大大简化了 API 编写复杂度。
2. 安装
Playwright 目前提供了 Python 和 Node.js 的 API,下面我们针对 Python 版的 Playwright 进行介绍。
要使用 Playwright,需要 Python 3.7 版本及以上,推荐大家使用Python 3.8,这个版本给我们做了一些优化
要安装 Playwright,可以直接使用 pip3,命令如下:
pip install playwright
安装之后我们要通过playwright 安装一些浏览器
playwright install
##这样会安装chrome,firefox,WebKit 浏览器配件,他会自动给我们配置好
playwright 同样给我们带来了同步和异步的用法,同步是顺序执行,异步类似并行。
下面代码演示的是同步的示例,python环境
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = browser_type.launch(headless=False)
page = browser.new_page()
page.goto('https://www.baidu.com')
print(page.title()) ##打印标题
browser.close()
运行之后可见 playwright 运行速度是很快的,对比起来selenium执行效率更高一些。
下面是异步的一个用法
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
for browser_type in [p.chromium, p.firefox, p.webkit]:
browser = await browser_type.launch()
page = await browser.new_page()
await page.goto('https://www.baidu.com')
print(await page.title())
await browser.close()
asyncio.run(main())
可见不是顺寻执行,正常来说python是从左到右从上至下顺序执行。
下面来介绍playwright 最吸引人的一点
代码自动生成功能
playwright codegen
在终端可以执行这个命令,然后咱我们点击的是时候代码会自动生成,然后复制到python文件 他就可以运行了
在我们登陆的时候 会有遇到验证码的情况,多数调用接口是要付费的,
那么playwright 给我们提供了down cookie的方法
playwright codegen --save-storge={命名}.json
##上边是保存 自己加载网站,下边是加载 加上网站
playwright codegen --load-storge={命名}.json {域名}
关注statham了解更多前沿知识