一、自动化入门:浏览器自动化概述、金融行业应用场景、Selenium vs Playwright 对比
1.1 浏览器自动化到底是什么?
说白了,浏览器自动化就是让程序替你操作网页。
你想想看,平时我们手动做的事——点按钮、填表单、查数据、截图——现在全交给代码去干。我刚开始接触这个概念时,觉得挺玄乎的。后来发现,其实就是模拟人的操作,只不过速度更快、更稳定、不会累。
核心原理其实不复杂:
- 程序通过某种协议(比如 WebDriver 或 DevTools Protocol)跟浏览器“对话”
- 告诉浏览器:去打开这个 URL、找到那个元素、点击它、输入文字
- 浏览器执行完,把结果返回给程序
嗯,这里要注意:浏览器自动化 ≠ 爬虫。爬虫侧重拿数据,自动化侧重模拟操作流程。金融系统里,我们更多是后者。
我的经验: 有一次在银行项目里,我们需要每天凌晨自动登录核心系统,拉取前一天的交易对账数据。手动操作要 20 分钟,自动化后 3 分钟搞定。关键是——人不会出错,机器会严格按照流程走。
1.2 金融行业有哪些典型应用场景?
金融行业对自动化的需求,其实比互联网公司更迫切。为什么?因为合规、审计、效率,三者缺一不可。
我梳理了几个最常见的场景:
- 批量数据录入与核对 —— 每天从 Excel 导入客户信息、交易记录到多个系统。人工做?眼睛会瞎。自动化做,半小时顶一天。
- 监管报表自动生成 —— 银保监会、央行要的各种报表,登录不同系统查询、下载、汇总。我曾经帮一家券商做过,每月节省 40 人天。
- 交易系统巡检 —— 每天早上开盘前,自动检查交易终端是否在线、行情是否正常、接口是否连通。出问题自动告警。
- 客户信息变更批量处理 —— 手机号、地址、证件有效期变更,批量提交到核心系统。注意,这里要严格控制频率,别把系统搞崩了。
- 自动化测试回归 —— 金融系统版本迭代频繁,每次上线前跑一遍自动化用例,确保核心功能没坏。我见过最夸张的,一个版本要跑 2000 多个用例。
避坑指南: 我曾经在银行项目里,自动化脚本跑得太快,导致核心系统负载过高,被运维团队投诉。后来我强制在每次操作之间加了 0.5 秒的等待。记住:金融系统不是压测工具,温柔点。
1.3 Selenium vs Playwright:到底选哪个?
这个问题,几乎每个刚入行的朋友都会问我。我的回答是:看场景,没有银弹。
先看一张对比表,心里有个底:
| 对比维度 | Selenium | Playwright |
|---|---|---|
| 诞生时间 | 2004 年(老牌) | 2020 年(新秀) |
| 协议基础 | WebDriver(W3C 标准) | Chrome DevTools Protocol |
| 浏览器支持 | Chrome、Firefox、Safari、Edge 等 | Chrome、Firefox、Safari(WebKit) |
| 速度 | 中等(有额外通信开销) | 快(原生协议,延迟低) |
| 自动等待 | 需要显式或隐式等待 | 内置自动等待机制 |
| 网络拦截 | 需要借助第三方库 | 原生支持(Mock API、拦截请求) |
| 多标签/多窗口 | 支持,但略显繁琐 | 原生支持,API 简洁 |
| 社区生态 | 极其成熟,资料多 | 快速增长中 |
| 学习曲线 | 平缓,入门简单 | 稍陡,但 API 设计更现代 |
1.4 我的选择建议
我个人习惯这样判断:
- 如果项目已经用了 Selenium 好几年,团队也熟悉,别折腾。稳定压倒一切。金融系统最怕的就是“为了换而换”。
- 如果是新项目,或者要重写自动化框架,我建议直接上 Playwright。为什么?因为它的自动等待机制太香了。你想想看,Selenium 里最烦人的是什么?是各种 NoSuchElementException、StaleElementReferenceException。Playwright 内置了智能等待,省心很多。
- 如果涉及网络请求拦截(比如 Mock 接口数据、修改请求头),Playwright 原生支持,Selenium 需要搭配 BrowserMob 或 WireMock,麻烦。
- 如果需要在 Safari 上跑,注意 Playwright 对 Safari 的支持还在完善中,Selenium 更稳妥。
重要提醒: 不管选哪个工具,金融系统的自动化脚本一定要做好异常处理。我曾经见过一个脚本,因为页面弹了个 unexpected 的弹窗,直接卡死,导致生产环境数据没同步。后来我加了个全局异常捕获 + 截图 + 告警,才算安心。
1.5 快速上手:一个简单的对比示例
光说不练假把式。我们来看一个最简单的例子:打开百度,搜索“金融科技”,然后截图。
Selenium 版本:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.find_element(By.ID, "kw").send_keys("金融科技")
driver.find_element(By.ID, "su").click()
time.sleep(2) # 手动等待
driver.save_screenshot("selenium_result.png")
driver.quit()
Playwright 版本:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://www.baidu.com")
page.fill("input#kw", "金融科技")
page.click("input#su")
page.wait_for_load_state("networkidle") # 自动等待网络空闲
page.screenshot(path="playwright_result.png")
browser.close()
看出来了吗?Playwright 的代码更简洁,而且不需要手动 sleep。它自己会等页面加载完再截图。这个细节,在金融系统的长时间运行脚本里,能省掉很多莫名其妙的超时问题。
我的小技巧: 刚开始学的时候,别纠结选哪个。两个都装,各写 5 个用例,你自然就知道哪个顺手了。工具是死的,人是活的。
1.6 本章小结
浏览器自动化,说白了就是让机器替你干活。金融行业里,它特别适合那些重复、繁琐、容易出错的操作。
Selenium 是老大哥,稳定、成熟、资料多。Playwright 是新锐,快、智能、API 现代。选哪个?看你的团队、项目阶段、具体需求。
我个人建议:新项目优先考虑 Playwright,老项目别轻易动。但不管选哪个,记住一点——金融系统,稳定第一,速度第二。
下一章,我们会深入 Playwright 的核心 API,手把手教你写出第一个能用的自动化脚本。到时候,我会分享一个我在银行项目里踩过的坑,保证让你印象深刻。