npm 包 Headless 使用教程

阅读时长 5 分钟读完

简介

Headless 是一个基于 Chrome DevTools 协议的 Node.js 库,它提供了一种在无头浏览器(Headless Browser)中自动执行 DOM 操作的方式,可用于爬虫、自动化测试等场景。

本文将介绍如何使用 npm 包 Headless,包括安装、配置、常用 API 的使用方法,并提供示例代码供读者参考。

安装

首先需要在项目中安装 Headless:

安装完成后即可在项目中引入 Headless:

配置

启动 Headless

启动 Headless 实例之前,需要先启动一个运行在端口 9222 的 Chrome 实例。可以通过以下命令启动:

其中 google-chrome 是 Chrome 的可执行文件路径,具体路径根据系统不同而有所差异。通过该命令启动的 Chrome 实例会监听来自 127.0.0.1:9222 的远程调试请求。

如果需要在 Node.js 中自动启动 Chrome 实例并连接到 Headless,可以使用 chrome-launcher 包。具体用法请参考其文档。

配置 Headless

启动 Headless 实例时可以传入一些配置项,包括 Chrome 连接地址和窗口大小等。以下是一个示例:

API

初始化

在启动 Headless 实例后,需要先调用 init 方法初始化实例:

打开页面

使用 openPage 方法打开指定 URL 的页面:

查找元素

Headless 提供了多种查找元素的方式,包括按 ID、按选择器、按文本内容等。以下是一些常用的方法:

  • findById(id: string): ElementHandle | null: 按 ID 查找元素。
  • findBySelector(selector: string): ElementHandle | null: 按选择器查找元素。
  • findByText(text: string): ElementHandle | null: 按文本内容查找元素。

例如,以下代码会找到 ID 为 my-div 的元素并获取其文本内容:

执行脚本

使用 evaluate 方法执行 JavaScript 脚本,并返回结果:

模拟操作

使用 typeInputclickElement 方法模拟用户的输入和点击操作:

关闭页面和 Headless 实例

使用 closePage 方法关闭当前页面:

使用 exit 方法关闭 Headless 实例:

示例代码

以下是一个使用 Headless 实现自动登录 GitHub 的示例代码:

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

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

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

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

- ----------------------------------------------------------- --------
----------------------------------------------------------------------------------
纠错
反馈