当前位置: 首页 > news >正文

【Playwright自动化】安装和使用

一、前言

Playwright 简介

Playwright 是一个由 Microsoft 开发的现代化端到端测试框架,支持 Chromium、Firefox 和 WebKit 内核的浏览器自动化。它专为测试 Web 应用设计,提供跨浏览器、跨平台(Windows、macOS、Linux)的兼容性,并支持多语言(JavaScript/TypeScript、Python、Java、.NET)。

核心特性包括:

  • 多浏览器支持:无需额外配置即可在 Chromium、Firefox 和 WebKit 上运行测试。
  • 自动等待机制:内置智能等待,减少手动添加等待时间的需求。
  • 网络拦截与模拟:可拦截和修改网络请求,模拟慢速网络或离线状态。
  • 并行测试:原生支持多线程和浏览器上下文隔离,提升测试效率。
  • 移动端模拟:通过设备描述符模拟移动设备(如 iPhone、iPad)。

Selenium 简介

Selenium 是历史悠久的 Web 自动化工具,核心由 WebDriver 协议驱动,支持多种编程语言(Python、Java、C# 等)和浏览器(需对应浏览器驱动)。

核心特性包括:

  • 广泛的浏览器支持:依赖浏览器驱动(如 ChromeDriver、GeckoDriver)。
  • 社区生态成熟:拥有大量插件和扩展(如 Selenium Grid 用于分布式测试)。
  • 灵活的集成能力:可与 TestNG、JUnit 等测试框架结合。

Playwright 与 Selenium 对比

架构与性能
  • Playwright:直接通过浏览器开发者协议(CDP)通信,无需中间驱动,启动更快。支持多浏览器上下文隔离,适合并行测试。
  • Selenium:依赖 WebDriver 协议,需单独安装浏览器驱动,启动速度较慢。并行测试需依赖 Selenium Grid。
自动化能力
  • Playwright:内置文件上传/下载、截图录屏、跨域处理等高级功能。网络拦截无需第三方库。
  • Selenium:需依赖第三方库(如 Selenium Wire)实现高级功能,基础功能需额外代码实现。
代码示例对比

Playwright(Python)

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch()page = browser.new_page()page.goto("https://example.com")print(page.title())browser.close()

Selenium(Python)

from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://example.com")
print(driver.title)
driver.quit()

适用场景
  • 选择 Playwright:需要快速执行、跨浏览器测试或高级功能(如网络模拟)。
  • 选择 Selenium:需兼容旧项目或依赖 Selenium 生态的插件/工具。

两者均可满足 Web 自动化需求,但 Playwright 在性能、易用性和功能丰富度上更具优势,尤其适合新项目。

二、安装 Playwright for Python

确保已安装 Python(推荐 3.7 或更高版本),并通过 pip 安装 Playwright 包:

pip install playwright

安装浏览器二进制文件

Playwright 需要特定版本的浏览器(Chromium、Firefox、WebKit)支持,运行以下命令自动下载:

playwright install

验证安装

创建简单的测试脚本(例如 test_playwright.py)验证功能是否正常:

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page() # 打开一个标签页page.goto("https://www.baidu.com") # 打开百度地址print(page.title()) # 打印当前页面titlebrowser.close() # 关闭浏览器对象

运行脚本:

python test_playwright.py

若输出网页标题(如 "百度一下,你就知道"),则安装成功。

可选:异步 API

Playwright 支持异步操作,适用于异步框架(如 asyncio):

import asyncio
from playwright.async_api import async_playwrightasync def main():async with async_playwright() as p:browser = await p.chromium.launch(headless=False)page = await browser.new_page()await page.goto("https://www.baidu.com")print(await page.title())await browser.close()asyncio.run(main())

三、headless 模式

headless 模式指无图形用户界面(GUI)的运行方式,通常用于浏览器、应用程序或操作系统。该模式通过命令行或脚本操作,适用于自动化测试、服务器环境或资源受限的场景。

headless 模式的应用场景

  • 自动化测试:调用 headless 浏览器执行网页测试。
  • 爬虫开发:无界面浏览器可模拟用户操作,绕过反爬机制。
  • 服务器环境:在无显示设备的服务器上运行需要浏览器支持的工具(如 PDF 生成)。

headless 模式的优缺点

优点

  • 节省系统资源,无需渲染图形界面。
  • 支持脚本化操作,易于集成到 CI/CD 流程。

缺点

  • 部分依赖 GUI 交互的功能无法使用(如手势操作)。
  • 调试复杂,需依赖日志或远程调试端口。

基本无头浏览器启动

使用playwright.sync_api模块同步模式启动无头浏览器(以Chromium为例):

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch(headless=True)  # 无头模式page = browser.new_page()page.goto("https://www.baidu.com")print(page.title())browser.close()

异步模式示例

异步接口更适合高性能爬虫或自动化任务:

import asyncio
from playwright.async_api import async_playwrightasync def main():async with async_playwright() as p:browser = await p.chromium.launch(headless=True)page = await browser.new_page()await page.goto("https://www.baidu.com")print(await page.title())await browser.close()asyncio.run(main())
http://www.dtcms.com/a/589286.html

相关文章:

  • logstatsh push 安装
  • C# OpenCVSharp实现Hand Pose Estimation Mediapipe
  • Java和.NET的核心差异
  • 基于灰关联分析与数据场理论的雷达信号分选优化方法
  • Linux Socket 编程全解析:UDP 与 TCP 实现及应用
  • 【NTN卫星通信】什么是LEO卫星技术
  • 郑州市建网站个人对网络营销的看法
  • 罗湖网站建设公司上海seo推广公司
  • 厦门市小学生计算机 C++语言竞赛(初赛)题目精讲与训练(整数的数据类型)
  • VC:11月9日加更,结构行情
  • 杨和网站设计河北邯郸永利ktv视频
  • 里氏替换原则Liskov Substitution Principle,LSP
  • 享元设计模式
  • VitaBench:智能体在真实交互任务中的挑战与前沿探索
  • 深度学习:python动物识别系统 YOLOv5 数据分析 可视化 Django框架 pytorch 深度学习 ✅
  • 【数据库 | 基础】DDL语句以及数据类型
  • 视觉元素网站浙江建设职业技术学院迎新网站
  • 正规网站建设费用做网站阳泉
  • Java I/O 流详解:字符流与字节流的完整指南
  • STM32外设学习-ADC模数转换器(代码部分)四个模块,光敏,热敏,电位,反射式红外。
  • 公众号开发网站购物网站开发介绍
  • 结构型设计模式2
  • 怎么做ppt教程网站灰色项目源码
  • 蛋白质内在无序区域(IDR)预测benchmark
  • 【TIDE DIARY 7】临床指南转公众版系统升级详解
  • STM32百问百答:从硬件到软件全面解析
  • MyBatis-Plus 框架设计模式全景解析
  • 创建型设计模式1
  • AI大数据在医疗健康中的应用与发展趋势
  • 网站规划与开发实训室建设方案个人如何做微商城网站