第三方库(6个)
| 库 | 用途 |
|---|---|
| Playwright | 浏览器自动化核心引擎(Chromium),驱动所有页面操作 |
| Pillow (PIL) | 图片生成 --- 凭证图片、评价晒图(随机背景色/文字) |
| re | 正则匹配 --- 精确查找页面元素文本(^确认收货$) |
| json | 读写 token 缓存文件(.auth_cache/*.json) |
| datetime | 判断缓存是否当天生成的 |
| random | 评价内容随机拼接、晒图颜色随机选择 |
Playwright 具体能力(15+)
| 能力 | 对应操作 |
|---|---|
launch() |
启动 Chromium 浏览器(非 headless) |
new_context() / storage_state |
创建隔离的浏览器上下文 + 注入缓存 token 实现免登录 |
goto() + wait_for_load_state() |
页面跳转 + 等待 DOM 渲染完成 |
locator() + .click() / .fill() |
元素定位(CSS/XPath/文本)→ 点击/填写 |
get_by_role() / get_by_text() |
语义定位(button/menuitem/textbox) |
frame_locator() |
穿透 Airwallex 支付 iframe 填写邮箱/安全码 |
.evaluate() |
注入 JS 移除 readonly 属性强行填写 |
set_input_files() |
上传文件到隐藏的 <input type="file"> |
.scroll_into_view_if_needed() |
滚动页面触发懒加载 |
.screenshot() |
异常时保存截图定位问题 |
expect_file_chooser() |
监听浏览器文件选择弹窗 |
wait_for_url() |
登录后等待 URL 跳转到目标页 |
自建辅助函数(7个)
| 函数 | 职责 |
|---|---|
safe_click() |
先等元素可见再点击,带超时 |
safe_fill() |
先等输入框可见再填写 |
force_fill() |
3 层回退:click 激活 → fill → JS 移除 readonly |
_auth_path() |
按 域名_账号 生成缓存路径 |
_is_fresh() |
判断缓存是否当天有效 |
load_cached_context() |
加载缓存 context(官网用、后台不用) |
save_auth_cache() |
登录后存 token 到本地 |
业务流程(4 大流程)
- 下单 --- 搜索商品 → 加入购物车 → 填写地址 → 选择支付 → 完成下单
- 功能测试 --- 导航栏/分类浏览/积分/钱包/意见反馈/客服聊天
- 后台管理 --- 两个子流程:上传凭证 + 订单发货(各自独立登录)
- 确认收货+评价 --- 待收货列表 → 确认收货 → 待评价 → 随机内容 + 晒图 → 提交