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

news2025/5/19 12:45:32

在这里插入图片描述

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_playwright
    
    with 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)。通过结合网络拦截和设备模拟,可覆盖复杂业务场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2379286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

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

一、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文件安装,前面部分很简单,就不再…

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(…

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

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

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实现与模型验证&…

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

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

第9章 组件及事件处理

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

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

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

服务器防文件上传手写waf

一、waf的目录结构,根据自己目录情况进行修改 二、创建文件夹以及文件 sudo mkdir -p /www/server/waf-monitor sudo mkdir -p /www/server/waf-monitor/quarantine #创建文件夹 chmod 755 /www/server/waf-monitor #赋权cd /www/server/waf-monitor/touch waf-m…

计算机的基本组成与性能

1. 冯诺依曼体系结构:计算机组成的金字塔 1.1. 计算机的基本硬件组成 1.CPU - 中央处理器(Central Processing Unit)。 2.内存(Memory)。 3.主板(Motherboard)。主板的芯片组(Ch…

linux下编写shell脚本一键编译源码

0 前言 进行linux应用层编程时,经常会使用重复的命令对源码进行编译,然后把编译生成的可执行文件拷贝到工作目录,操作非常繁琐且容易出错。本文编写一个简单的shell脚本一键编译源码。 1 linux下编写shell脚本一键编译源码 shell脚本如下&…

【深度学习】#12 计算机视觉

主要参考学习资料: 《动手学深度学习》阿斯顿张 等 著 【动手学深度学习 PyTorch版】哔哩哔哩跟李沐学AI 目录 目标检测锚框交并比(IoU)锚框标注真实边界框分配偏移量计算损失函数 非极大值抑制预测 多尺度目标检测单发多框检测(S…