首页/新闻资讯/正文详情

[Playwright][12] 踩坑记录:为什么 locator.count() 不会自动等待

发布时间:2026/11/2 19:01:10 来源:云帆数科 栏目:资讯中心
[Playwright][12] 踩坑记录:为什么 locator.count() 不会自动等待
在 HPC Dashboard 的 Job 自动化测试中我需要验证日期筛选前后的 Job 数量。在测试中我发现locator.count() 只会获取当前页面上的元素数量。如果页面数据还没加载出来可能返回 0。而 toHaveCount() 会在一定时间内反复检查元素数量直到符合预期或超时。1. locator.count() 为什么可能返回 0例如constjobIdspage.getByText(/^Job ID:/);constcountawaitjobIds.count();expect(count).toBeGreaterThan(0);count()会立即查询当前匹配的元素数量。如果 Job 列表还在异步加载即使稍后会显示多个 Job此时也可能返回0。需要注意Playwright 的自动等待机制并不适用于所有 Locator 方法。count()不会为了等待元素出现而自动重试。2. 实际项目中的处理方式在 Job Explorer 的日期筛选测试中我采用了以下写法constjobIdspage.getByText(/^Job ID:/);awaitexpect(jobIds.first()).toBeVisible();constoriginalCountawaitjobIds.count();expect(originalCount).toBeGreaterThan(0);先通过toBeVisible()等待第一个 Job 出现再获取当前数量。之后修改日期范围使用toHaveCount()验证筛选结果awaitstartDate.fill(2025-10-01);awaitendDate.fill(2025-10-02);awaitexpect(jobIds).toHaveCount(0);toHaveCount(0)会自动反复重试直到页面中的 Job 数量变为 0或者等待超时。3. count() 和 toHaveCount() 的区别方法自动重试适用场景locator.count()否获取当前元素数量expect(locator).toHaveCount(n)是验证异步更新后的元素数量expect(locator).toBeVisible()是等待目标元素可见还有一个细节等待第一个 Job 可见并不代表整个列表已经加载完成。如果测试依赖精确的初始总数最好等待明确的加载完成状态。4. 总结这次实践让我认识到Playwright 的 Locator 方法和自动重试断言并不是一回事。对于异步加载或动态更新的页面应该优先使用expect()提供的自动重试断言而不是通过固定等待时间或立即读取数量来判断页面状态。

相关推荐

【C++】set map 使用
【C++】set map 使用

目录 1. set 和 map 的与其他类型的介绍对比 2. set 的系列介绍 2.1 set 和 multiset 的相关文献 2.2 set 的初始化函数 2.3 set 的增删改函数 2.4 set 的其他函数 2.5 set 和 multiset 的对比 3. map 的系列介绍 3.1 map 和 multimap 的相关文献 3.2 map 的初始化函… · 2026/11/2 19:00:07

Spring AI 多模态实战(下):文生图 + TTS 语音合成(含 2.0 流式音频分片)
Spring AI 多模态实战(下):文生图 + TTS 语音合成(含 2.0 流式音频分片)

Spring AI 多模态实战(下):文生图 TTS 语音合成(含 2.0 流式音频分片)系列:Spring AI 深入浅出(第 17 篇) 版本:Spring AI 2.0.1 / Spring Boot 4.1.x / JDK 21 标签&am… · 2026/11/2 18:59:03

DARTS:CNN代码分享
DARTS:CNN代码分享

论文作者: Hanxiao Liu∗ Karen Simonyan Yiming Yang 代码链接: https://github.com/quark0/darts 环境需求:Python > 3.5.5, PyTorch 0.3.1, torchvision 0.2.0 代码结构: darts/└── cnn/├── architect.py├── gen… · 2026/11/2 18:59:03

AI编程时代,为什么扎实编程基础仍是不可替代的核心能力
AI编程时代,为什么扎实编程基础仍是不可替代的核心能力

1. 这不是“替代”,而是“新编程范式”的入场券最近在技术圈刷屏的那句“Elvis Saravia:用 Claude Code 不等于不用学编程”,我第一次看到时就在咖啡机旁停了三秒——不是因为话多,而是因为它精准戳破了一个正在快速膨胀的认知泡沫… · 2026/11/3 16:08:18

晶闸管载流子动力学:从导通契约到PWM本质
晶闸管载流子动力学:从导通契约到PWM本质

简介:本资源是《电力电子技术》第五版(王兆安、刘进军主编,机械工业出版社)的课后习题详细答案,专为电气工程及相关专业本科生、考研学生及期末备考者设计,切实解决课后习题无标准解析、核心概念理解困难、… · 2026/11/3 16:08:18

高斯滤波器原理与工程实现:高斯核、可分离卷积与边界处理
高斯滤波器原理与工程实现:高斯核、可分离卷积与边界处理

图像预处理链路上,第一个被加进去的算子十有八九是高斯滤波器。不管是做表面缺陷检测、做测量前的降噪,还是给边缘检测打底子,只要后面跟着阈值分割或者梯度计算,前面的平滑做得对不对,直接决定整条链路稳不稳。这篇文… · 2026/11/3 16:08:18

复合索引验证与EXPLAIN命令实战指南
复合索引验证与EXPLAIN命令实战指南

1. 复合索引验证的必要性在数据库优化工作中,复合索引的设计和使用往往是性能提升的关键点。但很多开发者会遇到这样的困惑:明明创建了复合索引,为什么查询性能还是没有明显改善?这时候,EXPLAIN命令就成了我们验证索引… · 2026/11/3 16:08:18

大模型安全冻结期:从输出监管到过程审计的技术跃迁
大模型安全冻结期:从输出监管到过程审计的技术跃迁

1. 事件本质:不是“暂停训练”,而是模型安全验证流程的强制介入“OpenAI 因多起模型失控事件暂停最强模型训练”——这个标题在传播中被高度简化,甚至产生误导。作为长期跟踪大模型安全演进的一线从业者,我必须先说清楚&#xff1… · 2026/11/3 16:08:18

SpringBoot体育电商系统开发与数据分析实践
SpringBoot体育电商系统开发与数据分析实践

1. 项目概述 体育器材销售商城与分析系统是一个基于SpringBoot框架开发的综合性电商平台,专为体育用品行业设计。这个系统不仅实现了传统电商的商品展示、交易功能,还整合了强大的数据分析能力,帮助商家实现数据驱动的精细化运营。 作为一名… · 2026/11/3 16:07:15

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码