每次回归测试都要打开页面、找到入口、点击,再确认结果;如果页面改了,脚本里的元素定位也可能跟着失效。LaVague 的吸引力在于:开发者先用自然语言描述目标,让代理尝试完成浏览器操作,再判断这些操作能否沉淀为可靠的自动化脚本。但“能点通一次”和“能长期稳定运行”是两回事。
LaVague 如何把目标变成浏览器操作
LaVague 是用于构建网页智能体的开源项目。据项目说明,它将任务分成两个环节:World Model 根据目标和当前网页状态决定下一步做什么;Action Engine 将指令转成可执行的操作代码,例如 Selenium 或 Playwright 代码,并执行。本文以 Selenium 路径做一个小任务验证。
它适合先探索步骤相对固定、结果容易观察的网页任务,例如打开文档入口、在内部工具中查找记录,或为重复性回归测试起草操作流程。需要注意的是,agent.run() 完成操作,不等于它已经为团队产出一份带断言、可独立运行且便于维护的 Selenium 测试文件。
用本地页面验证首次运行
先把目标缩到最小:打开测试页,点击“查看结果”,确认浏览器到达结果页。这样可以分别检查环境、页面操作和结果验证,而不必先处理登录、验证码或复杂业务状态。
准备 Python 环境、可用的浏览器,以及 LaVague 所需的模型服务配置。项目网站给出的入门安装命令是 pip install lavague;模型凭据和依赖配置请按所选模型及官方入门文档核对,不要把密钥写进脚本或提交到仓库。
python -m venv .venv
# 激活虚拟环境后执行
pip install lavague
在一个空目录中建立两个页面:
<!-- index.html -->
<!doctype html>
<html lang="zh-CN">
<head><meta charset="utf-8"><title>入口页</title></head>
<body><a href="/done.html">查看结果</a></body>
</html>
<!-- done.html -->
<!doctype html>
<html lang="zh-CN">
<head><meta charset="utf-8"><title>结果页</title></head>
<body><h1>任务完成</h1></body>
</html>
在该目录启动本地服务:
python -m http.server 8000
随后在另一个终端运行以下脚本。它沿用项目网站展示的 SeleniumDriver、ActionEngine、WorldModel 和 WebAgent 组合方式;如果安装版本的接口已有变化,应以当前文档为准调整。
from lavague.drivers.selenium import SeleniumDriver
from lavague.core import ActionEngine, WorldModel
from lavague.core.agents import WebAgent
driver = SeleniumDriver(headless=False)
agent = WebAgent(WorldModel(), ActionEngine(driver))
agent.get("http://localhost:8000/index.html")
agent.run("点击页面上的“查看结果”链接,打开结果页。")
这是一套验证方法,而不是已完成的实测结论。运行时先观察浏览器是否打开入口页、是否点击了正确链接、最终是否出现“任务完成”。如果这些条件没有逐项确认,就不能仅凭代理返回“已完成”判定任务成功。
点通之后,怎样判断代码靠不靠谱
若要把这次操作纳入回归测试,还需要人工整理定位方式并加入结果断言。下面是针对同一页面手工编写的验证基线,不是声称由 LaVague 原样导出的代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
browser = webdriver.Chrome()
try:
browser.get("http://localhost:8000/index.html")
wait = WebDriverWait(browser, 10)
wait.until(
EC.element_to_be_clickable((By.LINK_TEXT, "查看结果"))
).click()
wait.until(EC.url_contains("/done.html"))
assert "任务完成" in browser.find_element(By.TAG_NAME, "body").text
finally:
browser.quit()
评估 LaVague 生成的操作时,可以对照这份基线问三个问题:
- 定位是否稳健? 它找到的是目标元素,还是碰巧点中了相邻按钮?真实项目中若有多个同名入口,应优先增加稳定、唯一的测试标识。
- 等待是否合理? 页面异步加载时,固定休眠可能一时奏效,却容易在慢环境中失败;应按元素可点击、结果出现等条件等待。
- 结果是否经过验证? 点击动作成功不代表业务成功。测试需要检查 URL、页面内容或更明确的业务状态,并覆盖失败情形。
如果首次运行失败,先分层排查:浏览器没启动,检查本机浏览器与驱动环境;代理没开始操作,检查模型凭据和服务可用性;页面打开却点错,检查任务描述是否明确、页面是否存在多个匹配元素;本地页面无法访问,则先在同一台机器的普通浏览器中打开测试地址。
LaVague 值得用来降低网页操作探索和测试起草的门槛,尤其适合让不熟悉 Selenium 的同事快速表达任务意图。是否把它用于持续运行的自动化,仍取决于开发者能否审查实际操作、整理可维护的定位与等待逻辑,并补上独立的结果断言。

评论列表 (1条):
加载更多评论 Loading...