|
|
- with open('/Users/getmind/ds/kf/erp_automation.py', 'r') as f:
- lines = f.readlines()
-
- insert_idx = -1
- for i, line in enumerate(lines):
- if "✅ 已付款待审核订单处理完成" in line:
- insert_idx = i + 1
- break
-
- new_block = """
- # E7: 点击转正常单
- print(" -> 点击'转正常单'...")
- unquestion_clicked = False
- for frame in page.frames:
- try:
- btn = frame.locator("span#UnQuestions:has-text('转正常单'), span._jt_tool:has-text('转正常单')").first
- if btn.count() > 0 and btn.is_visible():
- btn.click(force=True, timeout=3000)
- time.sleep(1)
- print(" ✅ 已点击'转正常单'。")
- unquestion_clicked = True
- break
- except:
- continue
-
- if not unquestion_clicked:
- print(" ⚠️ 未找到'转正常单'按钮。")
-
- time.sleep(2)
- # 处理转正常单可能的提示弹窗(比如只有异常单才可以转正常单的提示)
- close_msg_dialog("转正常单结果提示")
- time.sleep(1)
-
- # E8: 设快递
- print(" -> 点击'设快递'...")
- kuaidi_clicked = False
- for frame in page.frames:
- try:
- btn = frame.locator("span._db_txt:text-is('设快递'), span:text-is('设快递')").first
- if btn.count() > 0 and btn.is_visible():
- btn.click(force=True, timeout=3000)
- time.sleep(1)
- print(" ✅ 已点击'设快递'。")
- kuaidi_clicked = True
- break
- except:
- continue
-
- if not kuaidi_clicked:
- print(" ⚠️ 未找到'设快递'按钮。")
-
- time.sleep(2)
- if kuaidi_clicked:
- print(" -> 选择'让系统自动计算'...")
- sys_selected = False
- for frame in page.frames:
- try:
- radio = frame.locator("input#SYS[name='lc']").first
- if radio.count() > 0:
- radio.click(force=True, timeout=3000)
- time.sleep(1)
- print(" ✅ 已选择'让系统自动计算'。")
- sys_selected = True
- break
- except:
- continue
-
- if not sys_selected:
- # 兜底通过 label 点击
- for frame in page.frames:
- try:
- lbl = frame.locator("label[for='SYS']").first
- if lbl.count() > 0:
- lbl.click(force=True, timeout=3000)
- time.sleep(1)
- print(" ✅ 已选择'让系统自动计算' (通过 label)。")
- sys_selected = True
- break
- except:
- continue
-
- if not sys_selected:
- print(" ⚠️ 未找到'让系统自动计算'选项。")
-
- time.sleep(1)
-
- # 点击设快递的确认按钮(可能有2次)
- for confirm_round in range(2):
- print(f" -> 点击确认设快递 (第{confirm_round+1}次)...")
- time.sleep(2)
-
- click_confirmed = False
- for frame in page.frames:
- if click_confirmed:
- break
- try:
- # 优先找 input#confirm_confirm, span#confirmBtn
- btn = frame.locator("input#confirm_confirm, span#confirmBtn, .layui-layer-btn0, a:text-is('确定'), button:text-is('确定')").first
- if btn.count() > 0:
- btn.click(force=True, timeout=3000)
- time.sleep(1)
- print(f" ✅ 已点击确认按钮 (第{confirm_round+1}次)。")
- click_confirmed = True
- except:
- continue
-
- if not click_confirmed:
- print(f" ℹ️ 第{confirm_round+1}次确认弹窗未出现。")
- break
- time.sleep(2)
-
- # 处理设快递可能出现的成功提示弹窗
- close_msg_dialog("设快递结果提示")
- time.sleep(1)
-
- # E9: 审核
- print(" -> 点击'审核'...")
- audit_clicked = False
- for frame in page.frames:
- try:
- # class 包含 ding_db_txt 且文本为 审核
- btn = frame.locator("span.ding_db_txt:has-text('审核'), span:text-is('审核')").first
- if btn.count() > 0 and btn.is_visible():
- btn.click(force=True, timeout=3000)
- time.sleep(1)
- print(" ✅ 已点击'审核'。")
- audit_clicked = True
- break
- except:
- continue
-
- if not audit_clicked:
- print(" ⚠️ 未找到'审核'按钮。")
-
- time.sleep(2)
- # 处理审核结果弹窗
- close_msg_dialog("审核结果提示")
- """
-
- lines = lines[:insert_idx] + [new_block] + lines[insert_idx:]
-
- with open('/Users/getmind/ds/kf/erp_automation.py', 'w') as f:
- f.writelines(lines)
|