npm 包 archerbot 使用教程

前言

在前端开发过程中,我们经常需要处理一些自动化的任务,比如爬取网页数据、自动提交表单等。这时候,我们就需要用到一些自动化工具了。其中,archerbot 就是一款非常优秀的 npm 包,其拥有很强的自动化能力,可以帮助我们完成许多重复且繁琐的任务。本文将详细介绍如何使用 archerbot 进行自动化处理。

安装

首先,我们需要在项目中安装 archerbot,可以使用 npm 命令进行安装。

--- ------- ------ ---------

快速入门

在安装完成后,我们就可以开始使用 archerbot 了。下面提供一个简单的示例代码:

----- --------- - --------------------

-- ------ --------- --
----- --- - --- -----------

-- -- ------ --
---------------- -- -------- ----- ------ ------- -- -
  ----- - ------- - - ------
  ----- ------------------------------------
  ----- ----------------------- --------
  ----- ----------------------------
  ----- ------------------------
--

-- ----
--------------- -- -------- - -------- ------------ --

以上代码中的 bot.task 方法用于定义一个任务。它接收两个参数:

  • 任务名称:该任务的名称,用于在运行任务时进行引用;
  • 处理函数:一个 async 函数,其参数是一个 page 对象和一组自定义参数,用于执行具体的任务。

bot.run 方法用于运行一个任务。它接收两个参数:

  • 任务名称:要运行的任务名称;
  • 自定义参数:一个对象,用于向任务传递自定义参数。

运行以上代码后,程序将自动在 Google 上搜索 JavaScript,并返回搜索结果页。

API 文档

上面的示例仅仅是 archerbot 的冰山一角。下面将详细介绍它所有的 API 接口。

实例化

首先,我们需要实例化一个 Archerbot 对象:

----- --------- - --------------------
----- --- - --- ------------------

该实例将作为整个自动化过程的基础,并提供许多方法和属性。

options 参数是一个包含一些选项的对象,可选。以下是该对象的可用选项:

  • headless: 一个布尔值,表示是否以无界面模式运行浏览器。默认为 true;
  • executablePath: 一个字符串,表示浏览器可执行文件的路径。默认为 null,使用系统默认安装路径;
  • args: 一个字符串数组,用于传递命令行参数给浏览器。默认为空数组;
  • userDataDir: 一个字符串,表示用户数据目录的路径。默认为 null,使用系统默认目录。

网络请求

以下方法用于处理浏览器的网络请求:

1. bot.onRequest(handler)

用于监听所有的网络请求,并在每个网络请求的“请求开始”时触发回调函数。

------------------- ------ -------- -- -
  -------------------- --------------
--

该方法返回一个用于取消监听的函数。

----- -------------- - -------------------- -------- -- -
  -- ---
--

-- ------
----------------

2. bot.onResponse(handler)

用于监听所有的网络请求,并在每个网络请求的“响应完成”(即响应 body 下载完成)时触发回调函数。

-------------------- ------ --------- -- -
  -------------------- ---------------
--

该方法返回一个用于取消监听的函数。

----- -------------- - --------------------- --------- -- -
  -- ---
--

-- ------
----------------

3. bot.prepareRequest(handler)

用于修改所有的网络请求,比如修改请求头、添加 cookie 等。该方法在每个网络请求发出前都会被调用一次。

------------------------ ------ -------- -- -
  -------------------- --------------
  ----------------------------------- - -----------
--

该方法返回一个用于取消监听的函数。

----- -------------- - ------------------------- -------- -- -
  -- ---
--

-- ------
----------------

网页操作

以下方法用于对浏览器中的网页进行操作:

1. bot.task(name, handler)

用于定义一个新的任务,任务包含一个或多个页面操作。

----------------- ----- ------ ------- -- -
  ----- -------------------------------------
  ----- ------------------------------ ----------------
  ----- ------------------------------ ----------------
  ----- ----------------------------
  ----- ------------------------
--

该方法返回一个可用于调用任务的函数。

----- ------- - ----------------- ------ ------- -- -
  -- ---
--

-- ----
--------- --------- -------- --------- ----- --

如果要定义多步任务,可以在回调函数中调用多个页面操作。

------------------ ----- ------ ------- -- -
  ----- ------------------------------------
  ----- ----------------------- ---------------
  ----- ----------------------------
  ----- ------------------------
  ----- ----------- - ----- -------------------- --- ---
  -------------------------------- -- -------------
--

2. bot.get(url, options)

用于在浏览器中打开指定的网页。

----- -----------------------------------

options 参数是一个包含一些选项的对象,可选。以下是该对象的可用选项:

  • waitLoad: 一个布尔值,表示是否等待页面的所有资源都加载完成后返回。默认为 true;
  • waitSelector: 一个 CSS 选择器,表示等待页面中指定的元素出现再返回。默认为 null。
----- ---------------------------------- -
  --------- -----
  ------------- ------------
--

该方法返回一个 Promise,其结果是一个 page 对象。

3. bot.delay(ms)

用于让程序延迟指定的时间(单位是毫秒)。

----- --------------- -- -- - -

4. page.type(selector, text, options)

用于向指定元素输入文本。

----- ------------------------------ --------
----- ------------------------------ ------

options 参数是一个包含一些选项的对象,可选。以下是该对象的可用选项:

  • delay: 一个数字,表示每次输入的间隔时间(单位是毫秒)。默认为 0。
----- ------------------------------ -------- - ------ --- --

5. page.click(selector, options)

用于点击指定元素。

----- -----------------------------

options 参数是一个包含一些选项的对象,可选。以下是该对象的可用选项:

  • button: 一个字符串,表示要模拟的鼠标按钮。可选值为 "left"、"right"、"middle"。默认为 "left"。
----- ----------------------------- - ------- ------- --

6. page.waitFor(selectorOrFunctionOrTimeout, options)

用于等待页面中的某个元素出现。

----- ------- - ----- ---------------------------
----- ---------------------------------

selectorOrFunctionOrTimeout 参数可以是以下三种类型的之一:

  • CSS 选择器,表示等待指定元素出现;
  • 一个或多个 CSS 选择器的数组,表示等待这些元素出现;
  • 一个回调函数,该函数返回一个布尔值,表示等待某个条件成立。

options 参数是一个包含一些选项的对象,可选。以下是该对象的可用选项:

  • timeout: 一个数字,表示等待的最长时间(单位是毫秒)。默认为 30000 毫秒(即 30 秒);
  • polling: 一个数字,表示每隔多长时间(单位是毫秒)轮询一次判断条件是否满足。默认为 500 毫秒。
----- ----------------------- - -------- ----- --
-- ---
----- --- ----------------- ------- -- -
  ------------- -- -
    -- ----------------------------------- -
      ---------
    - ---- -
      --------------
    -
  -- ------
--

7. page.waitForNavigation(options)

用于等待页面跳转完成。

----- -----------------------------
----- ------------------------

options 参数是一个包含一些选项的对象,可选。以下是该对象的可用选项:

  • timeout: 一个数字,表示等待的最长时间(单位是毫秒)。默认为 30000 毫秒(即 30 秒)。

8. page.goBack()

用于后退一页。

----- -------------

9. page.goForward()

用于前进一页。

----- ----------------

10. page.reload(options)

用于重新加载页面。

----- ------------- --------- ---- --

options 参数同 bot.get 方法的选项。

11. page.evaluate(pageFunction, ...args)

用于在浏览器页面中执行 JavaScript 代码。

----- ----- - ----- ---------------- -- ---------------

第一个参数 pageFunction 是一个 stringfunction 类型,表示要在页面中执行的代码。如果该参数是一个字符串,则将其作为可执行的 JavaScript 代码。如果该参数是一个函数,则将其转换为字符串,并将其作为可执行的 JavaScript 代码。该方法支持传递任意数量的其他参数,这些参数会被传递给 pageFunction

----- ------------------------- -- -
  ------ - - -
-- -- -- -- -- -

需要注意的是,由于 JavaScript 是运行在浏览器内部,所以在 pageFunction 内部无法直接访问 Node.js 的全局变量,比如 modulerequire 等。如果要访问这些变量,需要使用 window 对象,结合浏览器插件等方式进行封装。

12. page.$(selector)

用于查找页面中的一个元素。

----- ------ - ----- -----------------------

该方法返回的是一个 Promise 对象,结果是一个 ElementHandle 对象,表示查找到的元素。如果找不到指定的元素,结果为 null

13. page.$$(selector)

用于查找页面中的所有符合条件的元素。

----- ----------- - ----- -------------------- --- ---

该方法返回的是一个 Promise 对象,结果是一个 ElementHandle 对象的数组,表示符合条件的所有元素。如果找不到任何元素,结果为空数组。

14. ElementHandle.click(options)

用于模拟点击元素。

----- ------ - ----- -----------------------
----- --------------

options 参数同 page.click 方法的选项。

15. ElementHandle.type(text, options)

用于向元素输入文本。

----- ----- - ----- ---------------------------
----- -----------------

options 参数同 page.type 方法的选项。

16. ElementHandle.press(key, options)

用于模拟键盘按键。

----- ----- - ----- ---------------------------
----- ------------------
----- ------------------------

key 参数是一个表示按键的字符串,比如 "Enter"、"ArrowLeft" 等。options 参数同 page.type 方法的选项。

总结

archerbot 是一个非常强大的自动化工具,既简单易用又功能强大。本文仅仅介绍了其大部分 API 接口,更高级的用法还需要读者自行探索。在使用过程中,需要注意合法使用,不要用于非法用途。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/90496


猜你喜欢

  • npm 包 Mkoa 使用教程

    什么是 Mkoa? Mkoa 是一个基于 Koa 的后端框架。相比于 Koa,Mkoa 提供了更多的功能,并帮助前端开发人员更快地完成后端开发任务。Mkoa 支持使用 TypeScript 编写,并且...

    5 年前
  • npm 包 x-format 使用教程

    在前端开发中,我们经常需要处理日期、数字、货币等格式化的需求。为了避免重复造轮子,我们可以借助一些常用的 npm 包来帮助我们完成这些任务。其中,x-format 是一个非常实用的格式化工具库,它提供...

    5 年前
  • npm 包 x-dom 使用教程

    在前端开发中,我们常常需要动态生成页面元素或者进行 DOM 操作。这时候,x-dom 这个 npm 包就能派上用场了。x-dom 是一个轻量级的 JavaScript 库,可用于快速创建、汇集、搜索和...

    5 年前
  • npm包 x-callback 使用教程

    介绍 x-callback-url是URI scheme的一种,用于在移动设备的应用之间传递信息。此类URL可以通过在应用间传递的参数启动新应用,并且允许被新的应用返回参数。

    5 年前
  • npm 包 x-test 使用教程

    npm 是前端应用程序最常用的包管理器,通过 npm 可以便捷地管理和使用各种前端相关的包和插件。其中,x-test 是一个在前端开发过程中非常常用的 npm 包,用于进行单元测试和集成测试。

    5 年前
  • NPM 包 x-publish 使用教程

    前言 在前端开发中,使用 NPM 是必不可少的。而我们经常需要将自己编写的包发布到 NPM 上,供其他开发者使用。但是,发布包到 NPM 上并不是一件简单的事情。 在本文中,我们将介绍一个名为 x-p...

    5 年前
  • npm 包 x-process 使用教程

    在前端开发中,我们经常需要对进程进行管理和控制。而 npm 包 x-process 就是一个方便的工具,可以帮助我们更好地管理和控制进程。本文将详细介绍 x-process 的使用方法,并通过实例代码...

    5 年前
  • npm 包 zetta-peer-redirect 使用教程

    在前端开发中,npm 包已经成为了不可或缺的一部分。其中,zetta-peer-redirect 是一款非常实用的 npm 包,可以帮助我们更加便捷地完成前端应用的同步和转发工作。

    5 年前
  • npm 包 zetta-peer-auth 的使用教程

    前言 在当前的 web 应用开发中,前后端分离已经成为了一种趋势,前端开发者需要与后端开发者配合,共同完成项目开发。在项目开发过程中,会面临前端与后端的数据通信问题。

    5 年前
  • npm 包 voltron 使用教程

    简介 voltron 是一个 JavaScript 库,可以帮助前端开发人员快速构建复杂的用户界面。它提供了许多方便的功能和组件,能够帮助你更加高效地开发和维护你的前端项目。

    5 年前
  • npm 包 siren 使用教程

    siren 是一款可以帮助前端开发者快速创建 RESTful API 风格的资源和链接的 npm 包。它可以帮助前端开发者在开发中更加高效、快速地重用和创建资源和链接。

    5 年前
  • npm 包 kube-observable 使用教程

    介绍 kube-observable 是一个基于 Kubernetes API 的 Node.js 库,可以帮助开发者构建 Kubernetes 应用程序。 它提供了一种简单、易于使用的方法,用于监听...

    5 年前
  • npm包zetta使用教程

    前言 npm是javascript的包管理器,可以很方便的管理第三方的javascript库或者工具包等资源,zetta是其中一个非常优秀的npm包,它可以帮助我们快速构建物联网设备应用。

    5 年前
  • npm 包 titan 使用教程

    npm 包 titan 是一款前端开发中常用的手助工具,它可以帮助开发者快速搭建前端的工作环境,提供一系列的工具包和插件来协助前端开发。本篇文章将详细介绍如何使用 titan 包,包含如何安装、配置和...

    5 年前
  • npm 包 argod 使用教程

    简介 argod 是一个简单易用的命令行参数解析库。它可以帮助你轻松地解析和处理命令行参数,在 Node.js 开发中非常方便。本教程将介绍如何使用 argod 来解析命令行参数,同时提供一些实际案例...

    5 年前
  • npm 包 argo-gzip 使用教程

    什么是 argo-gzip? argo-gzip 是一个基于 argo-tunnel 的 Golang 库,用于在 Cloudflare 与客户端之间代理未压缩的内容。

    5 年前
  • npm 包 @oclif/plugin-warn-if-update-available 使用教程

    前言 在前端开发中,我们通常会使用许多 npm 包来辅助开发,这些包的版本也时常更新。但如果我们的项目中使用的某个 npm 包出现了更新,而我们却没有及时升级,就有可能引发一些错误。

    5 年前
  • npm 包 @oclif/plugin-help 使用教程

    在前端开发中,很多项目都会使用一些命令行工具来辅助开发过程,而 @oclif/plugin-help 就是其中一个非常好用的 npm 包。它可以让你的 CLI 应用程序的用户更方便地查看命令的使用方法...

    5 年前
  • npm 包 @oclif/config 使用教程

    前言 在前端开发中,使用命令行工具已经成为了非常重要的一部分。而 @oclif/config 是一个开箱即用的命令行界面(CLI)开发框架。它提供了如下功能: 不需要编写任何配置代码即可创建可扩展的...

    5 年前
  • npm 包 @oclif/command 使用教程

    介绍 @oclif/command 是一个用于创建命令行工具的 Node.js 包。它提供了一个用于编写命令和控制台输出的框架。此外,它还提供了一些有用的功能,例如命令行参数解析和验证、命令行帮助信息...

    5 年前

相关推荐

    暂无文章