DriverFreightFlowPage (APP): - 流程方法拆为单一职责的细粒度操作(open_freight_tab/fill_quantity/upload_photo_from_album/...), 流程方法仅做编排,公共 API 不变,用例零改动 - 移除全部 implicitly_wait 全局副作用,每步显式等待目标元素 - 容错点击(已知晓/确定)改为 _tap_by_text_if_present,跳过时记录 warning FreightAccountingPage (Web): - _go/_click_search 改显式等待(搜索框出现/列表数据行或空态),替代固定 2s/1s sleep - 表格等待升级为 td:visible,避开 vxe-table 固定列隐藏占位单元格 - 点击行操作按钮后显式等待弹窗出现,替代固定 800ms - 车队长下拉选择改显式等待下拉项渲染 - 可选弹窗操作统一收敛到 _try_click,跳过时记录 warning;关键确认按钮保持严格 两条 E2E 用例在真实环境回归通过(TC-D2S-001 116s / TC-D2S-002 112s)。
161 lines
8.3 KiB
Python
161 lines
8.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""优化司机-货主菜单功能描述:另存新文件 + 合并进运营端菜单清单"""
|
|
from openpyxl import load_workbook
|
|
from openpyxl.styles import Font, Alignment
|
|
|
|
SRC = r'E:\Desktop\xst_files\test\work\司机-货主菜单资源.xlsx'
|
|
NEW = r'E:\Desktop\xst_files\test\work\司机-货主菜单清单.xlsx'
|
|
OPS = r'E:\Desktop\xst_files\test\work\运营端菜单清单.xlsx'
|
|
|
|
# 按源文件行号(2-99)的优化后描述
|
|
D = {
|
|
2: '展示运营后台配置的首页轮播图,点击可跳转对应活动/货源页面',
|
|
3: '运单主列表:按状态Tab(待装货/待运输/待卸货等)分类展示全部运单,可执行装卸货确认、投诉、清分操作',
|
|
4: '按货主姓名、车牌号、装货地/卸货地简称、接单时间筛选运单',
|
|
5: '展示能源卡账户余额:电卡、汽卡、油卡',
|
|
6: '展示能源卡全部充值记录,可按充值时间筛选',
|
|
7: '展示能源卡全部消费记录,可按消费时间筛选',
|
|
8: '展示全部运单结算后的运费记录,可按时间、车牌号、手机号、运单筛选',
|
|
9: '站内消息列表:按消息类型点击跳转对应页面,可标记为已读',
|
|
10: '首页快捷入口:展示最新可接单货源,点击"更多"进入货源菜单',
|
|
11: '在线客服会话,与平台客服沟通',
|
|
12: '展示不同线路/货源的运价单价参考',
|
|
13: '按发货地、收货地、货物类型等条件搜索货源',
|
|
14: '调用手机摄像头扫描货源二维码直接接单',
|
|
15: '展示全部可接单货源,可按出发地、目的地筛选',
|
|
16: '查看货源完整信息,输入接单数量确认接单运输',
|
|
17: '展示已添加的全部常跑路线',
|
|
18: '选择起始地、目的地,点击新增保存常跑路线(原描述"新增长跑路线"为笔误)',
|
|
19: '点击某条常跑路线进入该线路的货源列表',
|
|
20: '展示手机号、姓名、头像等个人信息,可退出登录',
|
|
21: '输入两次新手机号及登录密码,提交更换手机号',
|
|
22: '输入旧密码和两次新密码,完成密码修改',
|
|
23: '展示账号注销需满足的条件,确认后提交注销申请',
|
|
24: '展示已开户的账户信息与余额',
|
|
25: '展示全部交易流水记录',
|
|
26: '展示全部收款记录,可按收款时间筛选',
|
|
27: '展示全部提现记录,可按状态、时间筛选',
|
|
28: '输入提现金额,确认后提交提现申请',
|
|
29: '展示已绑定的银行卡,可解绑、绑定账户、删除、设为默认卡',
|
|
30: '填写银行卡及持卡人信息,提交后完成绑卡',
|
|
31: '上传身份证照片完成实名认证',
|
|
32: '实名通过后进行视频活体认证',
|
|
33: '上传驾驶证、道路运输从业资格证等证件,完成司机认证',
|
|
34: '展示已添加的全部车辆,可按车牌号搜索、删除、设为默认车辆',
|
|
35: '填写车辆信息并上传行驶证等证件,匹配成功后提交审核',
|
|
36: '展示税务认证信息(代开发票税务登记)',
|
|
37: '展示全部车队,可按车队名称、手机号、联系人查询并申请加入',
|
|
38: '展示车队邀请记录,可按车队名称、手机号、联系人搜索',
|
|
39: '展示已加入的车队,可按车队名称、手机号、联系人搜索,可选择退出车队',
|
|
40: '展示已新增的车源(车辆运力)信息,可搜索、编辑、删除',
|
|
41: '填写车源信息,提交后新增车源',
|
|
42: '展示全部保单信息',
|
|
43: '展示全部维修申请记录,可按状态筛选',
|
|
44: '填写维修申请字段,提交维修申请',
|
|
45: '展示全部电子合同,可搜索查看',
|
|
46: '展示我发起的投诉记录',
|
|
47: '展示他人对我的投诉记录',
|
|
48: '展示平台车辆年检代办服务信息',
|
|
49: '展示我发出的评价记录',
|
|
50: '展示他人对我的评价记录',
|
|
51: '提交投诉与意见建议',
|
|
52: '展示运营后台配置的首页轮播图,点击可跳转对应活动页面',
|
|
53: '在线客服会话,与平台客服沟通',
|
|
54: '展示平台推荐的车源(车辆运力)信息',
|
|
55: '查看车源详细信息',
|
|
56: '货源发布类型选择:大厅货源、线路项目单',
|
|
57: '填写货源发布表单的全部字段并发布货源,支持管理常用路线',
|
|
58: '线路项目单列表:可修改、删除、停用、展示货源二维码',
|
|
59: '填写线路信息,新增线路项目单',
|
|
60: '查看线路详情,并可直接对该线路发布货源',
|
|
61: '展示全部账户余额数据',
|
|
62: '展示全部提现记录,可按状态、时间筛选',
|
|
63: '查看单个钱包的账户详细信息',
|
|
64: '输入提现金额,提交提现申请',
|
|
65: '发货记录统计,可筛选、查看详情',
|
|
66: '收货记录统计,可筛选、查看详情',
|
|
67: '运费记录统计,可筛选、查看详情',
|
|
68: '发票记录统计,可筛选、查看详情',
|
|
69: '站内消息列表:按消息类型点击跳转对应页面,可标记为已读',
|
|
70: '展示不同线路/货源的运价单价参考',
|
|
71: '展示全部货源,点击货源进入该货源对应的运单',
|
|
72: '展示全部运单,可筛选、评价、投诉、备注、核算、批量核算',
|
|
73: '同"首页>账户信息"入口:展示全部账户余额数据',
|
|
74: '同"首页>账户信息"入口:展示提现记录,可按状态、时间筛选',
|
|
75: '同"首页>账户信息"入口:查看单个钱包的账户详细信息',
|
|
76: '同"首页>账户信息"入口:输入提现金额提交提现申请',
|
|
77: '展示已绑定的银行卡,可解绑、绑定账户、删除、设为默认卡',
|
|
78: '填写银行卡及持卡人信息,提交后完成绑卡',
|
|
79: '上传货主证件,认证成为货主',
|
|
80: '展示全部公司成员,可筛选、添加、修改、删除',
|
|
81: '填写成员信息,提交后添加成员',
|
|
82: '展示全部保单记录',
|
|
83: '展示全部电子合同,可搜索查看',
|
|
84: '展示全部货主合同',
|
|
85: '展示可开票数据,可筛选并确认索取发票',
|
|
86: '展示全部承运分组,可新增、修改、删除分组',
|
|
87: '同"首页>车货统计"入口:发货记录统计,可筛选、查看详情',
|
|
88: '同"首页>车货统计"入口:收货记录统计,可筛选、查看详情',
|
|
89: '同"首页>车货统计"入口:运费记录统计,可筛选、查看详情',
|
|
90: '同"首页>车货统计"入口:发票记录统计,可筛选、查看详情',
|
|
91: '常用路线管理:可新增、修改、删除、查询路线',
|
|
92: '管理开票抬头信息,可新增、删除、修改',
|
|
93: '展示我发出的评价记录',
|
|
94: '展示他人对我的评价记录',
|
|
95: '展示我发起的投诉记录',
|
|
96: '展示他人对我的投诉记录',
|
|
97: '提交投诉与意见建议',
|
|
98: '展示常见问题与解决办法',
|
|
99: '展示平台车辆检测代办服务信息',
|
|
}
|
|
|
|
assert len(D) == 98 and set(D) == set(range(2, 100))
|
|
|
|
# ---- 1. 另存优化后的独立文件 ----
|
|
wb = load_workbook(SRC)
|
|
ws = wb['Sheet1']
|
|
FONT_SONG = Font(name='宋体', size=11)
|
|
WRAP = Alignment(wrap_text=True, vertical='center', horizontal='left')
|
|
for r, desc in D.items():
|
|
c = ws.cell(r, 6, desc)
|
|
c.font = FONT_SONG
|
|
c.alignment = WRAP
|
|
ws.column_dimensions['F'].width = 80
|
|
wb.save(NEW)
|
|
print('saved:', NEW)
|
|
|
|
# ---- 2. 合并进运营端菜单清单 Sheet1(追加行,沿用其列结构) ----
|
|
wb2 = load_workbook(OPS)
|
|
ws2 = wb2['Sheet1']
|
|
assert ws2.max_row == 300
|
|
FONT_AR = Font(name='Arial', size=10)
|
|
row = 301
|
|
for r in range(2, 100):
|
|
sys_name = ws.cell(r, 2).value # 系统(仅组首行有值)
|
|
l1 = ws.cell(r, 3).value # 一级菜单
|
|
l2 = ws.cell(r, 4).value # 二级菜单
|
|
l3 = ws.cell(r, 5).value # 三级菜单
|
|
if sys_name:
|
|
ws2.cell(row, 1, sys_name) # 客户端列,沿用"组首行有值"惯例
|
|
if l1: ws2.cell(row, 2, l1)
|
|
if l2: ws2.cell(row, 3, l2)
|
|
if l3: ws2.cell(row, 4, l3)
|
|
c = ws2.cell(row, 5, D[r])
|
|
c.font = FONT_AR
|
|
c.alignment = WRAP
|
|
row += 1
|
|
print('appended rows 301-%d' % (row - 1))
|
|
|
|
# ---- 3. 更新说明页 ----
|
|
ws3 = wb2['说明']
|
|
ws3['B12'] = '菜单条目数(运营端+司机端+货主端)'
|
|
ws3['C12'] = '=COUNTA(菜单清单!E:E)-1'
|
|
ws3['B16'] = '客户端来源'
|
|
ws3['C16'] = ('司机端/货主端菜单为人工整理(原《司机-货主菜单资源.xlsx》),'
|
|
'功能描述已优化;运营端菜单来自 sys_resource 表')
|
|
from openpyxl.styles import Font as F2
|
|
ws3['B16'].font = F2(name='Arial', size=10, bold=True)
|
|
ws3['C16'].font = F2(name='Arial', size=10)
|
|
wb2.save(OPS)
|
|
print('merged into:', OPS)
|