官方文档
Getting started | Playwrighthttps://playwright.dev/docs/intro
playwright诞生
微软出品,用户易用性
puppeteer 前身,改造了后诞生的playwright
playwright优点
- 启动和执行速度比selenium快,没有中间webdriver
- 无需下载浏览器驱动
- se底层是http(单向通讯),playwright基于websocket(双向通信)
- playwright更加稳定
- playwright自动等待(se中:显示/隐式/强制no such element)
- playwright支持异步(ui自动化影响不大,但接口有很多的优势)
- 支持报告视频
- 支持移动端
- 自定义定位
- 原生支持CDP
- 不需要跳框架
- 上下文检索
playwright安装
pip install playwright
playwright install # 下载playwright附带的浏览器驱动,和报告视频的组件
脚本录制
playwright codegen https://www.baidu.com/ # 录制百度为例
browser.new_context()
```Python
from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright: Playwright) -> None:
browser = playwright.chromium.launch(headless=False)
context = browser.new_context()
page = context.new_page()
page.goto("http://test.mediolabs.com/")
# ---------------------
context.close()
browser.close()
with sync_playwright() as playwright:
run(playwright)
```
-
context:Creates a new browser context. It won't share cookies/cache with other browser contexts.
(创建一个新的浏览器上下文。它不会与其他浏览器上下文共享 cookie/缓存)
相当于,多个page页相互有关联的。
-
这个是独立的浏览器,隐身对话,意思是每一个Beowser contexts都是独立的,互相之间没有关系,等于说全都是新装的浏览器。同一个context下才相互关联。
-
个人理解,一个context相当于重新多下载一个新的浏览器。