playwright的调试模式,方便调试selector, locator语法及查找效果

作者:yeyong日期:2025/11/19

下面是一套“边写边测”的通用套路,确保 page.locator() / wait_for_selector() 在提交代码前就能一次跑通,不用每次都重跑完整流程


  1. 官方“秒测”工具:Playwright Inspector

命令行里加 --paused 即可打开自带调试器:

1# Python 例子
2PWDEBUG=1 pytest my_test.py
3# 或直接
4playwright codegen https://your-site.com
5
  • 左侧 “Pick” 图标点一下,再点页面元素 → 自动生成最稳的 locator 代码。
  • 右侧 “Explore” 面板会实时显示:
    – 匹配到几个节点
    – 实际文本/属性值
    – 高亮渲染
    → 把生成的代码复制进脚本即可,零手写

  1. 在代码里快速“断言+高亮”

1loc = page.locator('span.text-20px.font-bold')
2
3# 1) 断言存在且唯一
4expect(loc).to_have_count(1)   # 多于 1 个会立即失败
5
6# 2) 临时高亮 2 秒,肉眼确认
7loc.evaluate('el => el.style.border = "3px solid red"')
8page.wait_for_timeout(2000)
9

跑单条用例时一眼就能看到是不是你想找的元素。


  1. 交互式 REPL —— 边敲边回车

官方提供 sync_playwright 的交互模式

1from playwright.sync_api import sync_playwright
2p = sync_playwright().start()
3browser = p.chromium.launch(headless=False)
4page = browser.new_page()
5page.goto('https://your-site')
6# 现在可以随便敲
7loc = page.locator('button.el-button--primary')
8loc.count()        # 立即返回匹配数量
9loc.text_content() # 立即返回文本
10loc.highlight()    # 页面直接闪绿框
11

调试完把确认好的 locator 复制到正式脚本即可。


  1. 脚本内“打印调试法”(最轻量)

1loc = page.locator('span:has-text("崔新")')
2print('匹配数:', loc.count())      # → 1 才继续
3print('文本:', loc.text_content()) # → 崔新
4

  1. 常见踩坑 checklist

  • 元素在 iframe → 先 page.frame_locator('#xxx').locator(...)
  • 等待时机不对 → 外加 loc.wait_for()expect(loc).to_be_visible()
  • 动态 class 顺序变化 → 用 [class*="text-20px"] 而非完整串
  • 文本前后有空格 → text=/\s*崔新\s*/(Playwright 正则语法)

一句话流程

  1. PWDEBUG=1 pytest → Inspector 自动生成 locator
  2. 脚本里 expect(loc).to_have_count(1) + loc.highlight() 确认
  3. 通过后再集成到完整用例,基本一次写对

playwright的调试模式,方便调试selector, locator语法及查找效果》 是转载文章,点击查看原文


相关推荐


Langchain Template 全面指南
前端小东2025/11/17

概述 LangChain Template 是 LangChain 提示工程的核心组件,用于动态生成模型的输入。 🎯 Template 的核心概念: Template 本质是一个带有占位符的文本字符串,这些占位符会在运行时被具体的值填充。它的主要目的是将提示逻辑与业务数据分离。 模板分类 1. 🎯 基础模板类(Core Templates) (1) PromptTemplate 最基础的文本模板 from langchain.prompts import PromptTemplate #


蓝桥杯备战记录:图论中关键边识别与DFS应用
akai1472025/11/16

一、问题背景与核心思路 问题描述 给定一个无向连通图和n对点,要求找到一条边,使得删除该边后所有n对点之间的路径都不连通。这类问题在图论中被称为关键边(Bridge)​或必经边问题。 核心算法思想 ​公共边识别​:寻找所有n对点路径上的公共边​边计数法​:统计每条边被多少对点的路径所经过​关键边判定​:计数等于n的边即为所求的关键边 二、DFS实现关键边识别 算法框架 vector<int> adj[MAXN]; // 邻接表存图 int edge_count[MAXN][MA


Jetpack Compose Navigation 2.x 详解
雨白2025/11/15

简单的页面跳转 在 Compose 中,我们可以借助 State 实现一个非常简单的屏幕内容切换效果。 class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent {


深度测评解析 CANN:从 ACL 到自定义算子,解锁昇腾计算的全部潜能
wei_shuo2025/11/14

深度测评解析 CANN:从 ACL 到自定义算子,解锁昇腾计算的全部潜能 CANN 核心价值解读:统一计算底座与全场景适配 ✅端到端栈级支持:CANN 覆盖驱动、运行时、算子加速库、编译器及上层框架适配的全套工具链,大幅降低模型向昇腾硬件移植的工程成本 ✅开发者定制接口:ACL 提供 C/C++、Python 双接口,兼顾快速原型验证与生产级接入;AOL(aclnn)算子性能强,支持两段式调用,方便做内存、离线编译优化 ✅可控资源调度与并发:通过 Device/Context/Stream


Python 的内置函数 input
IMPYLH2025/11/13

Python 内建函数列表 > Python 的内置函数 input Python 的内置函数 input() 是一个用于获取用户输入的标准函数,它会暂停程序执行,等待用户在控制台输入内容并按回车键确认。这个函数在交互式程序和需要用户参与的脚本中非常有用。 基本用法 input() 函数的基本语法如下: user_input = input([prompt]) 其中: prompt 是一个可选参数,用于显示提示信息,告诉用户需要输入什么内容函数返回用户输入的内容,以字符串形式保存


C++笔记——STL list
报错小能手2025/11/11

1. list 基本概念 什么是list? 双向链表:每个元素包含指向前后元素的指针,形成链式结构 核心特性(与vector/deque对比): 特性vectordequelist随机访问✅ O(1)✅ O(1)❌ O(n)头部插入删除❌ O(n)✅ O(1)✅ O(1)尾部插入删除✅ O(1)✅ O(1)✅ O(1)中间插入删除❌ O(n)❌ O(n)✅ O(1)内存布局连续分段连续完全分散 2. list 的基本使用 头文件和声明: cpp #include <list


各个系统的 docker安装
Qayrup2025/11/9

docker简介 Docker 是一组平台即服务的产品,它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。本文将介绍在 CentOS 8 操作系统中安装 Docker 服务,并解决镜像源无法访问的问题。 centos8 安装 1 检查版本 Docker 要求 CentOS 的内核版本至少高于 3.10,可以用命令uname -r查看 2 安装 Docker 所需依赖 //执行命令yum install -y yum-utils device-mapper-persistent-dat


理解PostgreSQL中的数据块
WarriorTan2025/11/7

PG的数据块大小,默认是8KB,可以调整为16K或者 32K吗? PostgreSQL的数据块大小默认为8KB,可以将其调整为16KB或32KB。数据块大小需要在‌编译安装‌PostgreSQL时通过配置参数指定,例如使用configure.ac中的--with-blocksize选项进行设置 。需要注意的是,一旦数据库初始化完成,数据块大小就无法再修改 。 数据块的行指针都包括哪些信息? 具体来说,行指针是一个32位的数字,其结构被划分为三个部分: 行内容的偏移量‌:占用15位(bit


C#.NET Random 深入解析:随机数生成原理与最佳实践
唐青枫2025/11/4

简介 Random 是 .NET 中 System 命名空间提供的一个类,用于生成伪随机数。它广泛应用于需要随机化操作的场景,如生成随机数据、模拟、游戏开发或测试用例生成。 伪随机数生成 在计算机中,Random 类用于生成伪随机数,这些数值在一定程度上看起来是随机的,但它们实际上是通过数学公式从一个初始种子值计算得到的,因此称之为“伪随机数”。 广泛应用 Random 类常用于游戏开发、模拟、加密等场景。在许多应用中,生成随机数或随机选择某个元素是常见的需求。 注意: Random


设计模式的原则有哪些?
你的人类朋友2025/10/31

前言 温馨提示 对于原本不太熟悉设计模式的人来说(比如在下),这些内容是需要一定的时间消化的!慢慢来 😆 👋 你好啊,我是你的人类朋友! 今天说说设计模式的原则有哪些! 在开发用户权限系统时,你是否遇到过这样的问题: 当创建新的管理员用户类型时,发现它无法兼容普通用户的所有方法,导致系统中到处需要判断用户类型? 让我们了解设计模式的基本原则,构建更健壮的软件架构~ 健壮是啥意思? 健壮是指软件系统在面对变化和复杂性时,能够保持稳定运行的能力。也就是耐造的能力。 正文 SOLID 原则

首页编辑器站点地图

Copyright © 2025 聚合阅读

License: CC BY-SA 4.0