Python + Playwright(0):从零开始学 Playwright

简介

  • Playwright 是一个强大的自动化库,由微软开发,主要用于web端UI自动化测试,支持 Python、Java、JavaScript、C# 等多种编程语言;
  • Playwright 仅用一个API即可自动执行Chromium、Firefox、WebKit等主流浏览器自动化操作,不仅支持无头模式和有头模式,还提供了代码录制功能,极大地提高了脚本编写效率,并且支持移动端自动化测试;
  • Playwright相比已有的自动化测试框架来说,具有很多优势,比如:
    • 跨浏览器:支持Chromium、Firefox、WebKit
    • 跨操作系统:支持Linux、Mac、Windows
  • Python(Git): https://github.com/microsoft/playwright-python

1. 安装

1.1 安装要求

在安装Playwright之前,请确保满足以下系统要求:

  • Python 3.7 或更高版本
  • Windows 10及以上版本,Windows Server 2016及以上版本,或Windows Subsystem for Linux (WSL)
  • MacOS 12 Monterey 或 MacOS 13 Ventura
  • Debian 11、Debian 12、Ubuntu 20.04 或 Ubuntu 22.04

1.2 pip安装

  • 安装playwright库
 pip install playwright
  • 安装浏览器驱动文件
 playwright install	

2. Playwright基础使用方法

2.1 录制脚本方法

Playwright提供了一个非常方便的功能:脚本录制。

录制脚本用法说明如下

playwright codegen [选项] [网址]
选项描述
-o, --output <文件名>将生成的脚本保存到文件
–target <语言>生成的代码语言,可选项包括 javascript, playwright-test, python, python-async, python-pytest, csharp, csharp-mstest, csharp-nunit, java, java-junit (默认: “python”)
–save-trace <文件名>为会话记录跟踪并保存到文件
–test-id-attribute <属性名>使用指定的属性生成数据测试ID选择器
-b, --browser <浏览器类型>使用的浏览器类型,可选项包括 cr, chromium, ff, firefox, wk, webkit (默认: “chromium”)
–block-service-workers阻止服务工作者
–channel <通道>Chromium 的分发通道,例如 “chrome”, “chrome-beta”, “msedge-dev” 等
–color-scheme <方案>模拟首选颜色方案,可选 “light” 或 “dark”
–device <设备名称>模拟设备,例如 “iPhone 11”
–geolocation <坐标>指定地理位置坐标,例如 “37.819722,-122.478611”
–ignore-https-errors忽略 HTTPS 错误
–load-storage <文件名>从文件加载上下文存储状态,此文件之前使用 --save-storage 保存
–lang <语言>指定语言/区域,例如 “en-GB”
–proxy-server <代理服务器>指定代理服务器,例如 “http://myproxy:3128” 或 “socks5://myproxy:8080”
–proxy-bypass <绕过域名>以逗号分隔的域名列表,用于绕过代理,例如 “.com,chromium.org,.domain.com”
–save-har <文件名>在结束时保存包含所有网络活动的 HAR 文件
–save-har-glob <glob模式>通过将 URL 与此 glob 模式匹配来过滤 HAR 中的条目
–save-storage <文件名>在结束时保存上下文存储状态,供以后使用 --load-storage
–timezone <时区>模拟的时区,例如 “Europe/Rome”
–timeout <超时时间>Playwright 操作的超时时间(以毫秒为单位),默认无超时
–user-agent <用户代理字符串>指定用户代理字符串
–viewport-size <大小>指定浏览器视口大小(以像素为单位),例如 “1280, 720”
-h, --help显示命令帮助信息

通过以下命令,可以启动录制过程,并将录制的脚本保存为Python文件:

 python -m playwright codegen --target python -o test_case.py -b chromium https://www.baidu.com

在这里插入图片描述
在这里插入图片描述

3.Browser、Context 和 Page的概念

3.1 Browser

Browser对象代表一个浏览器实例,Playwright支持多个浏览器(Chromium、Firefox、WebKit),每个浏览器实例都可以独立运行多个上下文和页面。

启动浏览器实例的代码示例:

browser = playwright.chromium.launch(headless=False)

3.2 Context

BrowserContext对象代表浏览器中的一个隔离环境,每个上下文都有自己独立的缓存、Cookie、存储等。

创建新上下文的代码示例:

context = browser.new_context()

3.3 Page

Page对象代表浏览器中的一个标签页(Tab),每个上下文可以包含多个页面,页面可以进行导航、交互、截图等操作。

创建新页面的代码示例:

page = context.new_page()

4. 完整代码示例

结合以上概念,下面是一个完整的示例代码,演示如何使用Browser、Context和Page对象进行自动化操作:

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/")

    # 这里可以添加更多的操作,例如搜索、点击等
    context.close()
    browser.close()


with sync_playwright() as playwright:
    run(playwright)

以上代码说明如下:

  • from playwright.sync_api import Playwright, sync_playwright, expect:从Playwright的同步API模块导入三个主要的组件。

  • Playwright:Playwright的主要类,用于创建和控制浏览器实例。

  • sync_playwright:一个上下文管理器,用于创建和自动关闭Playwright实例。

  • expect:一个用于断言的模块,可以检查页面的状态,确保测试的预期结果。

  • playwright.chromium.launch(headless=False):启动Chromium浏览器,浏览器以有头模式运行。

  • browser.new_context():创建一个新的浏览器上下文,隔离测试环境。

  • context.new_page():在该上下文中打开一个新页面。

  • page.goto("https://www.baidu.com/"):导航到百度首页,准备进行自动化操作。

  • context.close():关闭当前浏览器上下文,释放相关资源。

  • browser.close():关闭浏览器实例。

总结

Playwright作为一个功能强大且易于使用的自动化测试框架,无论是对于初学者还是有经验的测试工程师,都是一个值得学习和使用的工具。通过本文的介绍,希望能帮助大家快速入门Playwright,并将其应用到实际的自动化测试工作中。

### PythonPlaywright 习资源 对于希望Python 结合 Playwright 进行自动化测试的开发者来说,有多种途径可以获取高质量的习资料。 #### 官方文档与入门指南 官方提供了详尽的入门指导,帮助用户快速上手 Playwright 及其 Pytest 插件来构建端到端测试案例[^1]。通过阅读这些材料,能够掌握基本概念以及实践技巧,从而顺利开展项目开发工作。 #### 实战教程视频课程 网络上有许多专注于介绍如何利用 Python 加上 Playwright 来实现网页自动化的实战型教影片。例如,《最新出炉》系列中的相关内容不仅讲解了基础知识,还深入探讨了高级主题如截图功能的应用场景和技术细节[^2]。这类多媒体形式的教资源非常适合视觉化习者,并能提供直观的操作示范。 #### 技术博客文章 技术社区内不乏由经验丰富的工程师撰写的分享帖文,它们通常会围绕特定的技术难题展开讨论并给出解决方案。某些帖子还会特别强调在使用过程中需要注意的安全事项和其他潜在风险点,比如遵循目标站点的服务协议和机器人访问政策等重要提示[^3]。 ```python from playwright.sync_api import sync_playwright def run(playwright): browser = playwright.chromium.launch(headless=False) page = browser.new_page() page.goto('http://example.com') print(page.title()) browser.close() with sync_playwright() as p: run(p) ``` 此段代码展示了怎样启动 Chromium 浏览器实例并通过指定 URL 导航至某页面,最后打印该页面标题作为简单示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

blues_C

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值