如果您正在寻找一种快捷有效的方式来自动化提交 web 表单或者模拟人类在 web 页面上的操作,那么 webrobot 是一个值得推荐的工具。它是一种能够进行浏览器自动化测试的 Node.js 模块,能够在无头浏览器中对浏览器进行控制,实现自动备份、恢复和重启会话。下面我们来一步步介绍它的使用教程。
安装
首先,我们需要在全局范围内安装 webrobot:
npm install webrobot -g
这个命令将会在您的机器上安装 webrobot。
模块概述
webrobot 模块提供了它的主要 API。这些 API 包括:
create(robotOptions);
robot = robot.then(stepFunc);
robot.wait(config);
robot.launch(config);
robot.action(action);
robot.end(function());
robot.tearDown(function());
create(robotOptions)
第一步,我们需要使用 create
函数创建一个 Robot 实例。这个函数接受一些配置选项,如:
robotOptions = { browserSettings: { headless: true, args: ["--some-arg"] } };
这个选项用于设置 headless 模式和传递浏览器实例参数。headless
参数的值影响浏览器是否可见,args
参数是一个数组,表示传递给浏览器的参数。
robot = robot.then(stepFunc)
然后,我们需要一步步地定义程序逻辑。可以通过 then
函数来添加一个任务,该任务可以是一个异步函数也可以是一个同步函数。例如:
robot = robot.then(async page => { await page.goto("https://www.baidu.com"); const pageTitle = await page.title(); console.log(pageTitle); return page; });
在这个例子中,我们通过 await page.goto
控制浏览器打开某个网页,通过 await page.title()
获取了当前网页的窗口标题,并打印出来。
robot.wait(config)
为了在进行下一个任务之前等待一段时间,可以使用 wait
函数:
robot = robot.wait({ milliseconds: 5000 });
这个例子表示等待 5 秒钟之后再进行下一个任务。
robot.launch(config)
如果您需要启动一个新的浏览器实例,可以使用 robot.launch(config)
。例如:
robot = robot.launch({ browser: "chromium" });
这个例子表示启动一个名为 chromium
的浏览器实例。
robot.action(action)
需要进行一些重复性的工作时,可以使用 action
函数。例如:
robot = robot.action(function(page) { const elements = page.$$(".button"); for (let i = 0; i < elements.length; i++) { elements[i].click(); } return page; });
这个例子表示点击页面中所有名为 .button
的按钮。
robot.end(function())
定义结束时的操作,比如结束会话。
robot.end(() => { console.log("会话已结束"); });
robot.tearDown(function())
定义当错误发生时要执行的操作。
robot.tearDown(async () => { await page.screenshot({ path: "screenshot.png" }); console.log("被迫结束程序和会话"); await robot.destroy(); });
完整示例
下面是一个完整的 webrobot 示例:
-- -------------------- ---- ------- ----- - ------ - - -------------------- -------- ---------------- - --------- ----- ----- --------------------------- - -- ----------- ---- -- - ----- ------------------------------------ ----- --------- - ----- ------------- ----------------------- ------ ----- -- ----------- ---- -- - ----- ------------- - ----- -------------- ----- ------------------------------- ----- --------- - ----- -------------- ----- ------------------ ------ ----- -- ------- ------------- ---- -- ----------- ---- -- - ----- ----------------- ----- --------------------- --------- ---- --- -- ---------- -- -- - --------------------- ---
在这个示例中,我们打开了百度首页,向搜索框中输入了关键字“webrobot”,并单击搜索按钮进行搜索,程序等待 5 秒钟,然后将搜索结果截图并保存到 search-results.png
文件中。最后程序结束,打印一条“会话已结束”的消息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671058dd3466f61ffdd56