Playwright Python 入门指南:安装、录制脚本与基础使用

最近公司有个要求,登录某几个网站并截图。每周都要截图上交,为了偷点懒,了解到了这个playwright工具。这个工具的录制功能泰裤辣,非常方便省事。几乎不需要写代码就实现了我想要的功能。

简单介绍一下:Playwright 是一款由微软开发的现代化浏览器自动化工具,支持 Chromium、Firefox 和 WebKit 三大浏览器引擎。其 Python 版本凭借简洁的 API 和强大的功能,成为自动化测试和爬虫开发的理想选择。


一、安装 Playwright Python

我是mac版本,直接用命令安装,未遇到问题。

1. 安装 Python 包

通过 pip 安装 Playwright 的 Python 包:

pip install playwright
2. 安装浏览器二进制文件

安装完成后,python版本注意,运行以下命令下载支持的浏览器(Chromium、Firefox、WebKit):

python3 -m playwright install

二、自动录制脚本:使用 playwright codegen

Playwright 提供了一个强大的工具 codegen,能够通过录制用户操作自动生成 Python 代码,非常适合快速生成测试脚本。

步骤 1:启动录制工具

在终端中运行以下命令,启动浏览器并开始录制:

python3 -m playwright codegen --target python -o 'exanple.py' -b chromium  https:www.baidu.com
  • --target python:指定生成 Python 代码。
  • -o example.py:将生成的代码保存到 example.py 文件中。
步骤 2:操作浏览器
  1. 启动后,默认会打开一个 Chromium 浏览器和一个代码生成器窗口。
  2. 在浏览器中访问目标页面(如 https://www.baidu.com)。
  3. 执行操作(如输入文本、点击按钮等),所有操作会被实时转换为代码并显示在右侧窗口中。
步骤 3:保存生成的代码

关闭浏览器后,生成的代码会自动保存到 example.py 文件中。
示例生成的代码可能如下:

import re
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("https://www.baidu.com/")
    page.locator("#kw").click()
    page.locator("#kw").fill("playwright")
    page.get_by_text("playwright自动化工具").click()
    with page.expect_popup() as page1_info:
        page.get_by_role("link", name="Web自动化测试之playwright:概述").click()
    page1 = page1_info.value

    # ---------------------
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

三、手动编写 Playwright 脚本示例

以下是一个简单的 Playwright Python 脚本,演示如何打开浏览器、搜索内容并截图:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 启动 Chromium 浏览器(非无头模式)
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    
    # 访问百度并搜索关键词
    page.goto("https://www.baidu.com")
    page.fill("#kw", "Playwright 自动化测试")
    page.click("#su")
    
    # 等待结果加载并截图
    page.wait_for_selector(".result-op", state="visible")
    page.screenshot(path="search_results.png")
    
    # 关闭浏览器
    browser.close()

四、核心功能与场景

1. 自动等待机制

Playwright 自动等待页面元素加载完成,无需手动添加 time.sleep,提高脚本稳定性:

page.click("#submit")  # 自动等待元素可点击后再执行
2. 模拟设备与网络

支持模拟手机设备或网络条件:

from playwright.sync_api import DeviceScaleFactorSelector

# 模拟 iPhone 12
iphone_12 = p.devices["iPhone 12"]
context = browser.new_context(**iphone_12)
3. 处理弹窗与框架

轻松处理弹窗、iframe 和文件下载:

# 监听弹窗
page.on("dialog", lambda dialog: dialog.accept())

# 操作 iframe
frame = page.frame(name="my-iframe")
frame.click("button")
4. 并行测试

通过多浏览器上下文实现并行操作:

context1 = browser.new_context()
context2 = browser.new_context()
page1 = context1.new_page()
page2 = context2.new_page()

五、适用场景

  1. 自动化测试:快速编写端到端(E2E)测试脚本。
  2. 爬虫开发:处理动态渲染页面(如单页应用)。
  3. 自动化操作:批量执行网页操作(如表单提交、数据抓取)。

六、总结

Playwright Python 通过以下特性成为自动化领域的佼佼者:

  • 极简安装:一条命令即可安装浏览器和依赖。
  • 智能录制codegen 工具大幅降低脚本编写难度。
  • 跨浏览器支持:轻松覆盖 Chrome、Firefox、Safari。
  • 现代化 API:自动等待、网络拦截等功能开箱即用。
posted @ 2025-02-24 08:50  明天是spring  阅读(392)  评论(0)    收藏  举报
/雪花飘落效果