72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
# 返利查号节点:run_find_flow。登录/查号在 rebate_common。
|
||
|
||
from __future__ import annotations
|
||
|
||
from accept import AcceptanceReport, evidence_shot
|
||
|
||
from rebate_common import (
|
||
FLOW,
|
||
BrowserAdapter,
|
||
RebateFlowContext,
|
||
open_rebate_center,
|
||
login_rebate_center,
|
||
enter_purchase_agreement,
|
||
search_contract,
|
||
)
|
||
|
||
_ACCEPT = AcceptanceReport(flow=FLOW)
|
||
|
||
# 打开返利中心、登录、进采购协议、按合同号查号。
|
||
#
|
||
# 表里出现该号才返回 True。输入框回显不算。写 ACCEPT SUMMARY REBATE_FIND。
|
||
def run_find_flow(
|
||
browser: BrowserAdapter,
|
||
ctx: RebateFlowContext,
|
||
contract_no: str,
|
||
*,
|
||
expect_found: bool | None = None,
|
||
) -> bool:
|
||
_ACCEPT.reset()
|
||
try:
|
||
open_rebate_center(browser, ctx)
|
||
_ACCEPT.note("S02", "打开返利中心", {"url": ctx.rebate_url}, ok=True)
|
||
try:
|
||
login_rebate_center(browser, ctx)
|
||
_ACCEPT.note("S03", "登录", {"user": ctx.username}, ok=True)
|
||
except Exception as exc:
|
||
evidence_shot(browser, "rebate-login-failed", failed=True)
|
||
_ACCEPT.note(
|
||
"S03",
|
||
"登录",
|
||
{"user": ctx.username, "error": exc},
|
||
ok=False,
|
||
raise_error=False,
|
||
)
|
||
raise
|
||
enter_purchase_agreement(browser)
|
||
_ACCEPT.note("S04", "进入采购协议", {"menu": "采购协议管理"}, ok=True)
|
||
found = search_contract(browser, contract_no)
|
||
found_text = "yes" if found else "no"
|
||
if expect_found is None:
|
||
_ACCEPT.note(
|
||
"S05",
|
||
"查号",
|
||
{"contractNo": contract_no, "found": found_text},
|
||
ok=True,
|
||
)
|
||
else:
|
||
_ACCEPT.check(
|
||
"S05",
|
||
"查号",
|
||
[
|
||
("contractNo", contract_no, contract_no),
|
||
("found", found_text, "yes" if expect_found else "no"),
|
||
],
|
||
browser=browser,
|
||
screenshot_on_fail="rebate-find-mismatch",
|
||
)
|
||
return found
|
||
finally:
|
||
print(_ACCEPT.summary_text(), end="", flush=True)
|
||
_ACCEPT.dump()
|