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

Playwright中page的实现类深度解析-PageImpl 方法作用解析

PageImpl 方法作用解析

PageImpl 是 Playwright Java 中 Page 接口的核心实现类,继承自 ChannelOwner,负责封装浏览器页面的所有操作逻辑,内部依赖 BrowserContextFrameKeyboardMouse 等组件,方法可按功能分为 事件管理页面生命周期元素操作导航控制网络路由等待事件 等大类,以下是每个方法的详细作用解析。

一、事件监听与管理相关方法

用于添加/移除页面各类事件的处理器,基于 ListenerCollection 管理监听器,核心是将事件处理器绑定到对应的事件类型,触发时通知监听器。

方法 作用 关键实现细节
onClose(Consumer<Page> handler) 添加页面关闭事件处理器,页面关闭时触发 通过 listeners.add(EventType.CLOSE, handler) 注册监听器
offClose(Consumer<Page> handler) 移除页面关闭事件的处理器 通过 listeners.remove(EventType.CLOSE, handler) 移除
onConsoleMessage(Consumer<ConsoleMessage> handler) 添加控制台消息事件处理器(如 console.log 绑定 EventType.CONSOLE 事件,接收 ConsoleMessage 实例
offConsoleMessage(Consumer<ConsoleMessage> handler) 移除控制台消息事件的处理器 EventType.CONSOLE 事件中移除监听器
onCrash(Consumer<Page> handler) 添加页面崩溃事件处理器 绑定 EventType.CRASH 事件,页面崩溃时触发
offCrash(Consumer<Page> handler) 移除页面崩溃事件的处理器 EventType.CRASH 事件中移除监听器
onDialog(Consumer<Dialog> handler) 添加对话框事件处理器(如 alert/prompt 绑定 EventType.DIALOG 事件,必须通过 Dialog.accept()/dismiss() 处理对话框,否则页面冻结
offDialog(Consumer<Dialog> handler) 移除对话框事件的处理器 EventType.DIALOG 事件中移除监听器
onDOMContentLoaded(Consumer<Page> handler) 添加DOMContentLoaded 事件处理器 绑定 EventType.DOMCONTENTLOADED,DOM 加载完成时触发
offDOMContentLoaded(Consumer<Page> handler) 移除 DOMContentLoaded 事件的处理器 EventType.DOMCONTENTLOADED 事件中移除监听器
onDownload(Consumer<Download> handler) 添加文件下载事件处理器 绑定 EventType.DOWNLOAD,创建 DownloadImpl 实例并通知监听器
offDownload(Consumer<Download> handler) 移除文件下载事件的处理器 EventType.DOWNLOAD 事件中移除监听器
onFileChooser(Consumer<FileChooser> handler) 添加文件选择器事件处理器(如 <input type=file> 绑定 EventType.FILECHOOSER,创建 FileChooserImpl 实例并通知
offFileChooser(Consumer<FileChooser> handler) 移除文件选择器事件的处理器 EventType.FILECHOOSER 事件中移除监听器
onFrameAttached(Consumer<Frame> handler) 添加帧附加事件处理器 绑定 EventType.FRAMEATTACHED,帧附加到页面时触发(更新帧列表)
offFrameAttached(Consumer<Frame> handler) 移除帧附加事件的处理器 EventType.FRAMEATTACHED 事件中移除监听器
onFrameDetached(Consumer<Frame> handler) 添加帧分离事件处理器 绑定 EventType.FRAMEDETACHED,帧从页面分离时触发(更新帧列表)
offFrameDetached(Consumer<Frame> handler) 移除帧分离事件的处理器 EventType.FRAMEDETACHED 事件中移除监听器
onFrameNavigated(Consumer<Frame> handler) 添加帧导航事件处理器 绑定 EventType.FRAMENAVIGATED,帧导航到新 URL 时触发
offFrameNavigated(Consumer<Frame> handler) 移除帧导航事件的处理器 EventType.FRAMENAVIGATED 事件中移除监听器
onLoad(Consumer<Page> handler) 添加页面 load 事件处理器 绑定 EventType.LOAD,页面资源完全加载时触发
offLoad(Consumer<Page> handler) 移除页面 load 事件的处理器 EventType.LOAD 事件中移除监听器
onPageError(Consumer<String> handler) 添加页面错误事件处理器(如 JS 未捕获异常) 绑定 EventType.PAGEERROR,接收错误信息字符串
offPageError(Consumer<String> handler) 移除页面错误事件的处理器 EventType.PAGEERROR 事件中移除监听器
onPopup(Consumer<Page> handler) 添加弹窗页面事件处理器 绑定 EventType.POPUP,页面打开新弹窗时触发
offPopup(Consumer<Page> handler) 移除弹窗页面事件的处理器 EventType.POPUP 事件中移除监听器
onRequest(Consumer<Request> handler) 添加请求发送事件处理器 绑定 EventType.REQUEST,页面发送请求时触发
offRequest(Consumer<Request> handler) 移除请求发送事件的处理器 EventType.REQUEST 事件中移除监听器
onRequestFailed(Consumer<Request> handler) 添加请求失败事件处理器(如网络错误) 绑定 EventType.REQUESTFAILED,请求超时/失败时触发(HTTP 4xx/5xx 不算失败)
offRequestFailed(Consumer<Request> handler) 移除请求失败事件的处理器 EventType.REQUESTFAILED 事件中移除监听器
onRequestFinished(Consumer<Request> handler) 添加请求完成事件处理器 绑定 EventType.REQUESTFINISHED,请求成功完成时触发
offRequestFinished(Consumer<Request> handler) 移除请求完成事件的处理器 EventType.REQUESTFINISHED 事件中移除监听器
onResponse(Consumer<Response> handler) 添加响应接收事件处理器 绑定 EventType.RESPONSE,页面收到响应头时触发
offResponse(Consumer<Response> handler) 移除响应接收事件的处理器 EventType.RESPONSE 事件中移除监听器
onWebSocket(Consumer<WebSocket> handler) 添加WebSocket 连接事件处理器 绑定 EventType.WEBSOCKET,WebSocket 连接建立时触发
offWebSocket(Consumer<WebSocket> handler) 移除 WebSocket 连接事件的处理器 EventType.WEBSOCKET 事件中移除监听器
onWorker(Consumer<Worker> handler) 添加WebWorker 启动事件处理器 绑定
http://www.dtcms.com/a/485921.html

相关文章:

  • 【完整源码+数据集+部署教程】 【运动的&足球】足球场上球检测系统源码&数据集全套:改进yolo11-DGCST
  • 无用知识研究:如何用decltype里的逗号表达式判断一个类里面有operator <号,并在编译时优雅给出提示,而不是一大堆不相干的模板信息
  • 人类知识体系分类
  • Java 大视界 -- Java 大数据在智能政务数字身份认证与数据安全共享中的应用
  • 《Foundation 图标参考手册》
  • 从 “坑“ 到 “通“:Spring AOP 通知执行顺序深度解密
  • 博途SCL语言仿真七段数码管
  • 关于网站建设的介绍本地搭建wordpress建站教程
  • 免费网站收录网站推广苏州网站建设推荐q479185700霸屏
  • 【LeetCode热题100(43/100)】验证二叉搜索树
  • 养殖场疫病预警新方案:小吉快检BL-08plus现场快速锁定病原
  • 【ADS-1】【python基础-3】函数封装与面向对象
  • 攻防世界-Web-baby_web
  • SQLite数据库基本操作
  • git创建分支,以及如何管理
  • Netty线程模型与Tomcat线程模型对比分析
  • STEMlab 125-14 Gen 2
  • 如何租用网站服务器寿光营销型网站建设
  • 云手机玩游戏卡顿的原因都有哪些
  • Python Web框架对比与模型部署
  • C# 实现高保真 Excel 转 PDF(无需 Office 环境)
  • cycloneV nios 华邦flash程序固化方案
  • FreeBSD-14.3基本安装过程
  • 细说Docker命令
  • 大型门户网站建设效果好吗重庆网站建设公司怎么做
  • 【Web】LilCTF2025 WP(随便看看
  • Vue3+Ts+Element Plus 权限菜单控制节点
  • PP-OCRv5 MCP服务器在海光主板的部署与实战
  • Linux 服务器NFS文件共享
  • 吃透大数据算法-算法地图(备用)