AI

LaVague 浏览器自动化评估:把自然语言查询变成 Selenium 代码靠谱吗

每次回归测试都要打开页面、找到入口、点击,再确认结果;如果页面改了,脚本里的元素定位也可能跟着失效。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 的同事快速表达任务意图。是否把它用于持续运行的自动化,仍取决于开发者能否审查实际操作、整理可维护的定位与等待逻辑,并补上独立的结果断言。

热门话题

52okp 是一名关注人工智能、开源软件与效率工具的技术内容创作者,长期实践 Stable Diffusion、ComfyUI、AI 智能体、MCP、Codex 和各类开源项目。通过实际安装、配置与测试,整理可复现的操作教程、问题排查方法和工具使用经验。

登录用户才能发表评论! 登录账户

取消回复

评论列表 (1条):

加载更多评论 Loading...

延伸阅读:

changedetection.io:用 Docker 自托管网页变更监控,及时发现价格与内容更新

反复刷新商品页等降价、盯着公告怕错过更新,既耗时间,也可能漏掉关键变化。changedetection.io 可用 Do...

52okp
2026-10-06

开源项目值得部署吗?用维护状态、文档与许可证做一轮检查

你在 GitHub 上找到一个工具,README 的演示正好解决眼前的问题,于是准备把它部署到团队环境。真正需要确认的却...

52okp
2026-10-16

用 DropIt 建立自动文件整理流程:从整理规则到小批量验证

下载文件夹长期堆满压缩包、PDF 和截图,手动拖拽既费时又容易误放,而把这份苦差交给 DropIt 这款免费开源工具后,...

52okp
2026-10-07

Kopia:把备份做成可控的增量快照,自托管服务器和开发机都适用

服务器上的配置误删、开发机磁盘损坏,往往比预想中更常见,而 rsync 和 tar 的简单拷贝未必能帮你找回旧版本。开源...

52okp
2026-10-01

Goose:不只是代码建议,这个开源 AI Agent 能直接帮你执行、编辑并测试工程任务

不少 AI 编程工具止步于代码建议,真正的工程任务还要读项目、改文件、运行命令并验证结果;让 Agent 直接操作虽能推...

52okp
2026-09-28
    返回顶部