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

【通用智能体】Playwright:跨浏览器自动化工具

在这里插入图片描述

Playwright:跨浏览器自动化工具

      • 一、Playwright 是什么?
      • 二、应用场景及案例
        • 场景 1:端到端(E2E)测试
        • 场景 2:UI 自动化(表单批量提交)
        • 场景 3:页面截图与 PDF 生成
        • 场景 4:动态内容爬虫
        • 场景 5:性能监控(LCP/FCP 指标)
      • 三、核心优势对比
      • 四、总结

一、Playwright 是什么?

Playwright 是微软开发的跨浏览器自动化工具,支持 Chromium、Firefox、WebKit 等浏览器,提供多语言(Python、JavaScript、Java、C#)API。其核心能力包括:

  • 多浏览器支持:统一 API 操作不同浏览器。
  • 自动化操作:模拟点击、输入、导航等用户行为。
  • 网络拦截:捕获和修改 HTTP 请求。
  • 动态内容处理:自动等待元素加载,支持单页应用(SPA)。

二、应用场景及案例

场景 1:端到端(E2E)测试

案例:电商网站下单流程验证

  • 目标:测试用户从登录到下单的全流程是否正常。
  • 步骤
    1. 打开浏览器,导航至电商网站。
    2. 输入用户名/密码登录。
    3. 搜索商品并添加到购物车。
    4. 进入结算页,填写地址并支付。
    5. 验证订单状态是否为“支付成功”。
  • 代码片段
    from playwright.sync_api import sync_playwrightwith sync_playwright() as p:browser = p.chromium.launch()page = browser.new_page()page.goto("https://example.com/login")page.fill("#username", "test_user")page.fill("#password", "pass123")page.click("button:has-text('登录')")page.goto("https://example.com/search?q=iphone")page.click(".add-to-cart")page.click("#checkout-button")assert page.inner_text(".order-status") == "支付成功"browser.close()
    
  • 流程图
    启动浏览器 → 登录 → 搜索商品 → 下单 → 验证结果 → 关闭浏览器
    

场景 2:UI 自动化(表单批量提交)

案例:政府网站数据批量填报

  • 目标:自动将 Excel 数据填入多个表单页。
  • 关键点
    • 使用 page.type() 填写输入框。
    • 通过 page.select_option() 选择下拉框。
    • 循环处理多行数据。
  • 代码逻辑
    import pandas as pd
    data = pd.read_excel("data.xlsx")for index, row in data.iterrows():page.goto("https://gov-form-submit.com")page.fill("#name", row["姓名"])page.select_option("#gender", row["性别"])page.click("#submit-button")
    

场景 3:页面截图与 PDF 生成

案例:生成移动端响应式页面的测试报告

  • 目标:对同一页面在不同设备尺寸下截图,并生成 PDF。
  • 实现
    devices = ["iPhone 11", "Pixel 5", "iPad Pro"]
    for device in devices:context = browser.new_context(**playwright.devices[device])page = context.new_page()page.goto("https://responsive-site.com")page.screenshot(path=f"screenshot_{device}.png")page.pdf(path=f"report_{device}.pdf")
    

场景 4:动态内容爬虫

案例:抓取社交媒体动态评论

  • 挑战:评论通过 AJAX 动态加载,需滚动触发加载。
  • 解决方案
    page.goto("https://social-media.com/post123")
    while page.is_visible("text=加载更多"):page.click("text=加载更多")page.wait_for_timeout(2000)  # 等待数据加载
    comments = page.query_selector_all(".comment")
    print([comment.inner_text() for comment in comments])
    

场景 5:性能监控(LCP/FCP 指标)

案例:检测页面核心性能指标

  • 步骤
    1. 通过 page.route() 拦截网络请求。
    2. 使用 page.evaluate() 执行性能统计脚本。
  • 代码
    page.goto("https://target-site.com")
    metrics = page.evaluate('''() => {return { LCP: performance.getEntriesByName("largest-contentful-paint")[0].startTime,FCP: performance.getEntriesByName("first-contentful-paint")[0].startTime}
    }''')
    print(f"LCP: {metrics['LCP']}ms, FCP: {metrics['FCP']}ms")
    

三、核心优势对比

场景Playwright 优势
多浏览器测试单脚本兼容 Chrome、Firefox、Safari
动态内容处理自动等待元素/网络请求,避免手动添加 sleep
移动端模拟内置设备参数库(如 iPhone、Pixel)
网络拦截可修改请求头、模拟 API 响应(如 Mock 登录态)
无头模式支持 Headless 执行,适合 CI/CD 流水线

四、总结

Playwright 适用于 自动化测试、数据采集、UI 操作、性能分析 等场景,其跨浏览器支持和动态内容处理能力显著优于传统工具(如 Selenium)。通过结合网络拦截和设备模拟,可覆盖复杂业务场景。

相关文章:

【通用智能体】Playwright:跨浏览器自动化工具

Playwright:跨浏览器自动化工具 一、Playwright 是什么?二、应用场景及案例场景 1:端到端(E2E)测试场景 2:UI 自动化(表单批量提交)场景 3:页面截图与 PDF 生成场景 4&am…...

SmartETL函数式组件的设计与应用

SmartETL框架主要采用了面向对象的设计思想,将ETL过程中的处理逻辑抽象为Loader和Processor(对应loader模块和iterator模块),所有流程组件需要继承或实现DataProvider(iter方法)或JsonIterator(…...

精准掌控张力动态,重构卷对卷工艺设计

一、MapleSim Web Handling Library仿真和虚拟调试解决方案 在柔性材料加工领域,卷对卷(Roll-to-Roll)工艺的效率与质量直接决定了产品竞争力。如何在高动态生产场景中实现张力稳定、减少断裂风险、优化加工速度,是行业长期面临的…...

LlamaIndex中应用自定义提示词提升回答质量

在 LlamaIndex 中,get_response_synthesizer 允许你自定义生成回答的方式,包括传入自定义提示词(prompt)。可以通过 response_mode 和 text_qa_template 等参数来控制回答的生逻辑。在 LlamaIndex 中优化提示词(Prompt Template)可以显著提升回答质量。 一、使用自定义提…...

永磁同步电机公式总结【一】——反电动势、磁链、转矩公式;三项、两项电压方程;坐标表换方程

一、PMSM 电机参数介绍 1.1 转子极数 转子极数 (Rotor Poles) :三相交流电机每组线圈都会产生 N、S 磁极,每个电机每相含有的永磁体磁极个数就是极数。由于磁极是成对出现的,所以电机有 2、4、6、8……极 (偶数)。 未知参数的电机&#xff…...

STL - stack 和 queue 及容器适配器模式的介绍

文章目录 1. stack 的介绍和使用1.1 stack 的介绍1.2 stack 的接口及使用1.3 stack 的模拟实现 2. queue 的介绍和使用2.1 queue 的介绍2.2 queue 的接口及使用2.3 queue 的模拟实现 3. priority_queue的介绍和使用3.1 priority_queue 的介绍3.2 priority_queue 的接口及使用3.…...

windows 安装gdal实现png转tif,以及栅格拼接

windows 安装gdal实现png转tif,以及栅格拼接 一、安装gdal 网上有很多安装gdal的方法,此处通过osgeo4w安装gdal 1.下载osgeo4w 下载地址 https://trac.osgeo.org/osgeo4w/ 2、安装osgeo4w exe文件安装,前面部分很简单,就不再…...

量子计算在金融科技中的应用前景

随着量子计算技术的飞速发展,其在各行业的应用潜力逐渐显现,金融科技领域更是备受关注。量子计算的强大计算能力有望为金融行业带来前所未有的变革,从风险评估到投资组合优化,从高频交易到加密技术,量子计算都可能成为…...

OpenAI Chat API 详解:打造智能对话应用的基石

目录 OpenAI Chat API 详解:打造智能对话应用的基石参数概览核心参数详解与实战1. model: 选择你的 AI 大脑2. prompt: 指引 AI 的灵魂3. max_tokens: 控制输出的长度4. temperature 和 top_p: 调控创造力5. stop: 控制生成的结束6. presence_penalty 和 frequency_…...

JavaScript性能优化实战(12):大型应用性能优化实战案例

在前面的系列文章中,我们探讨了各种JavaScript性能优化技术和策略。本篇将聚焦于实际的大型应用场景,通过真实案例展示如何综合运用这些技术,解决复杂应用中的性能挑战。 目录 电商平台首屏加载优化全流程复杂数据可视化应用性能优化案例在线协作工具的实时响应优化移动端W…...

Socket.IO是什么?适用哪些场景?

Socket.IO 详细介绍及适用场景 一、Socket.IO 是什么? Socket.IO 是一个基于事件驱动的 实时通信库,支持双向、低延迟的客户端-服务器交互。它底层结合了 WebSocket 和 HTTP 长轮询 等技术,能够在不同网络环境下自动选择最优传输方式&#x…...

深度学习入门:卷积神经网络

目录 1、整体结构2、卷积层2.1 全连接层存在的问题2.2 卷积运算2.3 填充2.4 步幅2.5 3维数据的卷积运算2.6 结合方块思考2.7 批处理 3、池化层4、卷积层和池化层的实现4.1 4维数组4.2 基于im2col的展开4.3 卷积层的实现4.4 池化层的实现 5、CNN的实现6、CNN的可视化6.1 第一层权…...

【Odoo】Pycharm导入运行Odoo15

【Odoo】Pycharm导入运行Odoo15 前置准备1. Odoo-15项目下载解压2. PsrtgreSQL数据库 项目导入运行1. 项目导入2. 设置项目内虚拟环境3. 下载项目中依赖4. 修改配置文件odoo.conf 运行Pycharm快捷运行 前置准备 1. Odoo-15项目下载解压 将下载好的项目解压到开发目录下 2. …...

pytest框架 - 第二集 allure报告

一、断言assert 二、Pytest 结合 allure-pytest 插件生成美观的 Allure 报告 (1) 安装 allure 环境 安装 allure-pytest 插件:pip install allure-pytest在 github 下载 allure 报告文件 地址:Releases allure-framework/allure2 GitHub下载&#x…...

pycharm连接github(详细步骤)

【前提:菜鸟学习的记录过程,如果有不足之处,还请各位大佬大神们指教(感谢)】 1.先安装git 没有安装git的小伙伴,看上一篇安装git的文章。 安装git,2.49.0版本-CSDN博客 打开cmd(…...

Android日活(DAU)检测的四大实现方案详解

引言 日活跃用户(DAU)是衡量应用健康度的核心指标之一。在Android开发中,实现DAU统计需要兼顾准确性、性能和隐私合规。本文将详细介绍四种主流实现方案,并提供完整的代码示例和选型建议。 方案一:本地检测方案 核心…...

2021ICPC四川省赛个人补题ABDHKLM

Dashboard - The 2021 Sichuan Provincial Collegiate Programming Contest - Codeforces 过题难度: A K D M H B L 铜奖 5 594 银奖 6 368 金奖 8 755 codeforces.com/gym/103117/problem/A 模拟出牌的过程,打表即可 // Code Start Here int t…...

oracle linux 95 升级openssh 10 和openssl 3.5 过程记录

1. 安装操作系统,注意如果可以选择,选择安装开发工具,主要是后续需要编译安装,需要gcc 编译工具。 2. 安装操作系统后,检查zlib 、zlib-dev是否安装,如果没有,可以使用安装镜像做本地源安装&a…...

httpx[http2] 和 httpx 的核心区别及使用场景如下

httpx[http2] 和 httpx 的核心区别在于 HTTP/2 协议支持,具体差异及使用场景如下: 1. 功能区别 命令/安装方式协议支持额外依赖适用场景pip install httpx仅 HTTP/1.1无通用请求,轻量依赖pip install httpx[http2]支持 HTTP/2需安装 h2>3…...

Text models —— BERT,RoBERTa, BERTweet,LLama

BERT 什么是BERT? BERT,全称Bidirectional Encoder Representations from Transformers,BERT是基于Transformer的Encoder(编码器)结构得来的,因此核心与Transformer一致,都是注意力机制。这种…...

【AGI】大模型微调数据集准备

【AGI】大模型微调数据集准备 (1)模型内置特殊字符及提示词模板(2)带有系统提示和Function calling微调数据集格式(3)带有思考过程的微调数据集结构(4)Qwen3混合推理模型构造微调数据…...

新能源汽车制动系统建模全解析——从理论到工程应用

《纯电动轻卡制动系统建模全解析:车速-阻力拟合、刹车力模型与旋转质量转换系数优化》 摘要 本文以纯电动轻卡为研究对象,系统解析制动系统建模核心参数优化方法,涵盖: 车速-阻力曲线拟合(MATLAB实现与模型验证&…...

【Linux驱动】Linux 按键驱动开发指南

Linux 按键驱动开发指南 1、按键驱动开发基础 1.1. 按键驱动类型 Linux下的按键驱动主要有两种实现方式: 输入子系统驱动:最常用,通过input子系统上报按键事件 字符设备驱动:较少用,需要自己实现文件操作接口 1.…...

湖北理元理律师事务所:债务管理的社会价值探索

债务问题从来不是孤立的经济事件,其背后牵涉家庭稳定、社会信用体系乃至区域经济发展。湖北理元理律师事务所通过五年服务数据发现:科学债务规划可使单个家庭挽回约23%的可支配收入,间接降低离婚率、心理健康问题发生率等社会成本。 债务优化…...

【Bluedroid】蓝牙HID DEVICE 报告发送与电源管理源码解析

本文基于Android蓝牙协议栈代码,深度解析HID设备(如键盘、鼠标)从应用层发送输入报告到主机设备的完整流程,涵盖数据封装、通道选择、L2CAP传输、电源管理四大核心模块。通过函数调用链(send_report → BTA_HdSendRepo…...

04、基础入门-SpringBoot官方文档架构

04、基础入门-SpringBoot官方文档架构 # Spring Boot官方文档架构 Spring Boot官方文档是学习和使用Spring Boot的重要资源,其架构清晰,内容全面,帮助用户从入门到精通。以下是官方文档的主要架构: ## 1. 引言 - **关于文档**&…...

第9章 组件及事件处理

9.1 Java Swing概述 图像用户界面(GUI) java.awt包,即Java抽象窗口工具包,Button(按钮)、TextField(文本框)、List(列表) javax.swing包 容器类&#xff08…...

三、高级攻击工具与框架

高级工具与框架是红队渗透的核心利器,能够实现自动化攻击、权限维持和隐蔽渗透。本节聚焦Metasploit、Cobalt Strike及企业级漏洞利用链,结合实战演示如何高效利用工具突破防御并控制目标。 1. Metasploit框架深度解析 定位:渗透测试的“瑞…...

用golang实现二叉搜索树(BST)

目录 一、概念、性质二、二叉搜索树的实现1. 结构2. 查找3. 插入4. 删除5. 中序遍历 中序前驱/后继结点 一、概念、性质 二叉搜索树(Binary Search Tree),简写BST,又称为二叉查找树 它满足: 空树是一颗二叉搜索树对…...

10.13 LangChain工具调用实战:@tool装饰器+小样本提示,日处理10w+调用秘籍

LangChain 工具调用(Tool Calling)深度解析 关键词:LangChain工具调用, 函数调用与工具调用区别, @tool装饰器, ToolMessage机制, 小样本提示工程 1. Function Calling vs Tool Calling LangChain 中的工具调用系统经历了从函数调用(Function Calling)到工具调用(Tool …...