跳转至

Playwright 简单操作指南(OBPM portal)

配套 run-testcase。定位以**可见文案 / title / role** 为主,不使用 catalog / OBPMTest。

MCP 工具(user-playwright)

工具 用途
browser_navigate 打开登录页、portal
browser_snapshot 获取可点击 target 与结构
browser_click 点击;参数用 target(snapshot ref)或稳定选择器
browser_fill_form / browser_type 填账号、表单字段
browser_take_screenshot 截图到本轮 screenshots/
browser_evaluate 轻量断言:document.body.innerText、toast 文本
browser_run_code_unsafe 多步串联时用 page.getByTitle / getByText / getByRole
browser_close 套件结束后关闭

调用前用 GetMcpTools 核对当前 schema(字段名可能为 target)。

登录

goto {HOST}/static/signon/index.html
fill 账号、密码
click 「登录」
wait URL 含 /static/portal/vue/index.html

进入应用

  1. 顶栏应用列表中点击目标软件(名称可能省略号截断,看 title 或关键字,如「ISO」)
  2. 等待侧栏出现该应用中文菜单

菜单与页签(硬规则:父容器限定)

侧栏菜单与主区页签常同名(如都叫「文档分类」)。**禁止**裸用 page.getByTitle('…') / 全页 getByText 点菜单或页签。

目标 父元素限定 Playwright 示例
菜单(一级/叶子) 父为 class="main-navbar" page.locator('.main-navbar').getByTitle('文档分类')
页签 父为 class="main-tab" page.locator('.main-tab').getByTitle('文档分类')
# 打开菜单叶子(唯一合法路径)
page.locator('.main-navbar').getByTitle('元数据配置').click()
page.locator('.main-navbar').getByTitle('文档分类').click()

# 切换已打开页签(不是重新点菜单)
page.locator('.main-tab').getByTitle('文档分类').click()
  • 一级与叶子都用中文业务名
  • 打开失败时先 snapshot,确认目标在 .main-navbar / .main-tab 内,勿盲目重试
  • 顶栏「切换应用」仍在应用列表区域(非业务叶子);业务侧栏一律落在 .main-navbar

禁止用查询栏打开菜单(硬)

  • 禁止 portal 顶栏/全局「查询」「搜索」「菜单搜索」输入菜单名再点结果进功能
  • **禁止**工作台搜索、快捷搜索冒充侧栏导航
  • 菜单打不开 → 展开一级分类 / snapshot / 人工协助,**不要**改走查询栏

用例结束后关闭页签(硬)

每条用例结束(PASS/FAIL/SKIP)后关闭本条打开的业务页签,再跑下一条:

# 优先
page.getByText('关闭所有', { exact: true }).click()

# 或关闭弹层后,在 .main-tab 内逐个关页签
  • 关页签前先关残留 .el-dialog
  • 套件全部结束、browser_close 前再清一次页签

视图工具栏

常见按钮可见文本:新建、删除、导入Excel、查询相关按钮。

优先:getByText('新建', { exact: true }) 或 snapshot 后 click 对应 target。

表单字段

优先级:

  1. 与标签文案关联的输入(label / 邻近「分类编码」等)
  2. placeholder
  3. snapshot 中 textbox 顺序(仅字段少且稳定时)

填写后可用 innerText 或输入框 value 抽查。

保存与 toast

  • 点击 [title="保存"] 或 [title="保存并返回"],或按钮文本
  • 成功常见:保存 成功、保存并返回 成功(以实际 toast 为准)
  • 失败:页面/toast 含「失败」「错误」「重复」「已存在」等

列表断言

  • 回到列表页签或再点叶子菜单
  • document.body.innerText 包含业务键(编码、名称、状态)
  • 统计行数时注意表头也会出现列名,避免误计

重开单据

  • 正确:列表行点击 / 查询后打开
  • 错误:再点侧栏同一菜单叶子(会新建空单)

弹层

视图选择 / 用户 / 部门:打开 → 选中 →「确认」→ 确认 dialog 消失后再继续。

截图命名

screenshots/{用例编号}-step{序号}-{简述}.png

失败步骤必截;通过关键步建议截。

禁止

  • build_obpm_catalog.py、catalog.json
  • inject-obpm-dom.js、window.OBPMTest
  • 用资源 id 拼 DOM 选择器冒充稳定定位(除非用户在人工协助中明确给出且已写入本指南)
  • 用查询栏 / 菜单搜索代替 .main-navbar 侧栏点菜单
  • 用例结束后不关页签、带着旧表单页签继续下一条