法院诉讼费退费申请(人民法院在线服务网)
Overview
通过 agent-browser 自动化浏览器,在人民法院在线服务网(zxfw.court.gov.cn)完成诉讼费退费申请的提交。适用于大量案件退费申请的高效批量办理。技能内置防重复上传校验、持久化会话、登录态恢复与完整排障指引。
开始前向用户收集的信息(本技能不含任何银行/账户数据)
| 信息 | 来源 |
|---|---|
| 待办案件清单(当事人姓名 + 案号) | 用户提供的文件夹或清单 |
| 退费账户确认书 PDF | 用户本机(批量办理时各户通常共用一份) |
| 每案的退费申请书、诉讼费发票、判决书 PDF | 用户本机,按案号对应 |
| 开户行 / 开户名 / 银行账号 | 以账户确认书为准,向用户确认后填写 |
| 当事人(预交诉讼费方,通常是原告全称) | 判决书/退费申请书中核实 |
前置条件
- agent-browser 已安装:
agent-browser --version可正常执行(含 Chromium 内核)。 - 用户已登录:法院平台登录(扫码+人脸识别,或密码+验证码)必须由用户本人完成。启动可见浏览器后请用户登录,用 snapshot 确认页面显示账号名(律师姓名)后再继续。
- 持久化会话:所有命令前加
AGENT_BROWSER_SESSION_NAME=<批次标识>;批量办理时整个批次共用一个会话名即可(如refund_batch_1),每案完成后返回列表页继续下一案。
核心技术要点(uni-app 页面,决定成败)
- 点击组件一律用 MouseEvent 序列,
.click()和agent-browser click <ref>在本平台经常无效:
js const r = el.getBoundingClientRect(); ['pointerdown','mousedown','mouseup','click'].forEach(tp => el.dispatchEvent(new MouseEvent(tp, {bubbles:true, clientX:r.x+r.width/2, clientY:r.y+r.height/2}))); - 案件空间内"事项申请"藏在"更多"下拉中:进入案件空间后,点击
.fd-item-more(更多)展开下拉菜单,再点击菜单中的"事项申请"。直接搜索"事项申请"按钮会找不到或不响应。 - 文件上传三步法:点击槽位
.fd-btn-add→agent-browser upload "input[type=file]" <路径>→ 对 input 派发change/input事件。全局只有一个隐藏的input[type=file]。 - 上传验证看
.fd-item文本:等待约 5 秒后检查 picker 内含.pdf文本的.fd-item数量(__vue__.$data.files立即读取可能误报为 0)。
工作流程
Step 1: 启动浏览器并确认登录
AGENT_BROWSER_HEADED=1 AGENT_BROWSER_SESSION_NAME=<批次标识> agent-browser open "https://zxfw.court.gov.cn"
sleep 3
AGENT_BROWSER_HEADED=1 agent-browser snapshot | head -30
- 必须使用可见浏览器(
AGENT_BROWSER_HEADED=1),登录环节需用户本人操作。 - 登录态丢失恢复:浏览器重启后 cookie 会丢失(localStorage 无 token)。重新打开平台 → 密码登录标签("密码登录"文本也要用 MouseEvent 序列点击)→ 用户类型切"律师用户" → 填账号密码 → 截取验证码图片(base64 img)用 OCR 识别填入 → 点击登录。
Step 2: 进入"我的案件",按当事人姓名搜索
- 搜索框为 uni-searchbar 自定义组件:先点击
.uni-searchbar__box激活,再对input.uni-input-input执行focus()+ 赋值 + 派发input事件,然后点击"查询"。 - snapshot 核对案号无误后再继续。
Step 3: 进入案件空间 → 更多 → 事项申请
- 点击案件条目的"案件空间"按钮(用 MouseEvent 序列),会打开新标签页,
agent-browser tab list查看。 - 在案件空间点击
.fd-item-more(更多)展开下拉,再点击下拉中的"事项申请",进入"新增申请"页面。 - 部分法院(如自贸区法院)的案件空间按钮布局不同,但"更多 → 事项申请"路径通用。
- 每次导航后用 snapshot 确认页面已变化,防止无效点击。
Step 4: 一键填表 + 上传 + 提交
进入"新增申请"页后,运行整合脚本(表单是渐进展开的,脚本会先选申请类型):
bash scripts/finish_refund.sh \
"<退费申请书.pdf>" "<诉讼费发票.pdf>" "<判决书.pdf>" \
"<当事人全称>" "<开户行>" "<开户名>" "<银行账号>" "<账户确认书.pdf>"
脚本依次完成:选"申请退费" → 选当事人 → 填开户行/开户名/银行卡号 → 依次上传 4 个槽位 → 核对材料数量 → 提交 → 输出"待审核"验证结果。
- 三个银行字段对应页面 3 个
input.uni-input-input(顺序:开户行、开户名、银行卡号),脚本通过派发input事件写入。 - 银行卡号在 snapshot 中可能显示为精度异常的数字(无障碍树大数值转换问题),以
input.value实际值为准,不要误判为填错。
Step 5: 逐案循环
每案提交成功(snapshot 显示"待审核")后:返回"我的案件"标签页 → 清空/覆盖搜索词为下一案当事人 → 重复 Step 3-4。
关键规则(务必遵守)
- 防重复上传:每个上传槽位只操作一次;上传后验证
.fd-item含.pdf文本的文件数为 1。出现重复卡片时按references/troubleshooting.md的方法删除。 - 当事人必须选预交诉讼费方(通常是原告):选错会导致退费对象错误,务必对照判决书核实。不同案件的原告支行名称可能不同,批量办理时逐案确认。
- 退费理由留空(除非用户明确要求填写)。
- 会话持久化:全程同一
AGENT_BROWSER_SESSION_NAME;页面空白时agent-browser close后以同一会话名重启并请用户重新登录,不要在同页面反复无效操作。 - 提交后验证:snapshot 必须出现申请记录且状态为"待审核",记录申请时间,才可判定该案完成。
Resources
scripts/finish_refund.sh— 一键完成"选类型→选当事人→填银行信息→上传4材料→核对→提交"的主脚本。scripts/upload_material.sh— 单槽位防重复上传脚本(逐槽位手动操作时使用)。references/flow.md— 详细流程与元素定位方法(MouseEvent 点击、picker 热区、上传机制原理、登录恢复)。references/troubleshooting.md— 已踩坑位与更正记录(重复上传删除、页面空白、picker 无响应等)。