npm 包 physical-chrome 使用教程

前言

在前端开发中,我们经常需要通过直接操作浏览器的方式来进行一些自动化测试或爬虫等工作。而 physical-chrome 就是一款能够通过 Node.js 直接操作 Google Chrome 浏览器的 NPM 包。其最大的优势在于,不管你是使用 Windows、Mac 还是 Linux 平台,都可以使用相同 API 与 Chrome 进行交互,不需要考虑操作系统限制带来的问题。

本文将介绍如何安装和使用 physical-chrome 进行网络爬虫等前端相关的操作。

安装

在使用 physical-chrome 之前,我们需要先安装 Node.js 12.xx 或更高版本。然后,我们可以通过npm安装。

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

使用

安装完成后,我们需要先启动 Chrome 浏览器:

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

在 Windows 和 Linux 下启动也非常简单,在命令行中输入:

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

然后,创建 app.js 文件,并且输入以下内容:

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

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

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

以上代码实现了 HTTP 请求,并打印了所有标题和链接。运行这个脚本:

---- ------

如果一切正常的话,你将看到以下输出内容:

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

这就是你所请求的 Github 页面的简略版。

深度分析

physical-chrome 这个包内部封装了 Chrome DevTools Protocol,提供了大量的 API,可以非常灵活地操作浏览器。

前置操作

我们需要启用 Chrome 远程调试端口,这样我们就可以通过 DevTools 连接到浏览器。启动 Chrome 后,我们使用 --remote-debugging-port=<port> 选项来设置远程调试的端口。接着,我们还需要指定 --user-data-dir=<dir> 参数来指定 Chrome 运行时的目录,以便运行多个实例(比如测试环境和生产环境)。

了解核心 API

physical-chrome 提供许多强大的 API,这些 API 提供了操作浏览器的不同层面。我们重点介绍下面这些 API。

PhysicalChrome.launch(options)

启动浏览器实例。可以设置 options 对象,其中包含了很多配置项,例如是否开启 headless 模式、使用什么版本的浏览器等。

browser.newPage()

创建一个新的页面。我们可以在这个页面中执行跳转、截图等操作,需要注意的是,这个函数会返回一个 Page 类型的实例。

page.goto(url, options)

跳转到指定的 URL 地址,这个函数返回一个 Promise 对象,可以在跳转完成后进行下一步操作。你可以在 options 中配置超时时间、跳转等待时间等。

page.waitFor(selectorOrFunction, options)

等待满足特定条件的元素的出现或执行特定的代码。

page.evaluate(pageFunction, ...args)

执行在浏览器上下文中的函数,和 page.evaluateHandle() 很相似。它可以获取到浏览器中的 DOM、cookie、localStorage 等信息,执行一些特定的操作。

browser.close()

关闭浏览器实例。

示例

现在我们来看一个 Page 对象的用例代码,基本上,它与 puppeteer 的使用非常之像。

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

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

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

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

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

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

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

--------

以上代码实现了打开百度首页、等待百度 logo 元素渲染完成、通过 JavaScript 获取 logo 元素的位置信息并打印、最后截图保存下来的操作。

指导意义

在前端的开发中,我们需要操作浏览器的场景越来越多。有时候需要自动化测试、数据爬取、页面截图等等,这些操作相对比较琐碎,人工操作的推广也很难达到一定规模。而自动化测试可以解决这个问题,这里面最重要的部分就是实现浏览器的自动化。而 physical-chrome 就是一套助你搞定浏览器自动化的神器,值得大家好好研究和使用。

理解什么时候使用什么工具是非常关键的一点。使用正确的工具可以让你的开发效率倍增,这一点尤其是在操作一些重复性工作时表现更为明显。physical-chrome 的出现就提供了这一条无需编写繁杂脚本去操作浏览器的方便路径,开发者们可以轻松的完成基于浏览器的各种操作。

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


猜你喜欢

  • npm 包 @frekyll/star-names 使用教程

    简介 @frekyll/star-names 是一个可以随机生成星星名称的 npm 包,它包含了数百个最常见的恒星名字。本文将为您讲解如何安装和使用该 npm 包。

    4 年前
  • npm 包 compute-histogram 使用教程

    在前端开发中,经常需要处理海量数据,并统计出某个字段的频次分布情况,比如用户年龄分布、商品价格区间分布等等。如果手动计算这个分布,难度很大,效率也很低。而 npm 包 compute-histogra...

    4 年前
  • npm 包 subnet-check 使用教程

    简介 subnet-check 是一款基于 Node.js 的 npm 包,用于检查 IP 地址是否在指定子网范围内。subnet-check 可以用于前端和后端开发,并允许用户指定自定义子网和 IP...

    4 年前
  • npm 包 optimat-vue-alert-dialog 使用教程

    介绍 optimat-vue-alert-dialog 是一个 Vue 组件库,用于创建弹窗提示框,包括警告框、确认框等。该库使用简单,支持自定义样式和操作按钮。 安装 使用 npm 安装 optim...

    4 年前
  • npm 包 npm-greeting-module 使用教程

    介绍 在前端开发中,为了提高工作效率和代码质量,我们常常会使用一些第三方的工具和插件。而 npm(Node Package Manager)就是一个非常常见和好用的前端工具,它能够帮助我们方便地管理和...

    4 年前
  • npm 包 optimat-vue-confirm-dialog 使用教程

    在前端开发中,经常需要使用对话框来与用户交互。optimat-vue-confirm-dialog 是一个基于 Vue.js 的用于创建确认对话框的 npm 包,下面将详细介绍如何使用它。

    4 年前
  • npm 包 optimat-vue-base-component-framework 使用教程

    在前端开发中,我们经常会用到各种 npm 包来帮助我们快速搭建项目或实现某些功能。而 optimat-vue-base-component-framework 是一个非常实用的 Vue 基础组件框架,...

    4 年前
  • npm 包 optimat-vue-toast 使用教程

    简介 optimat-vue-toast 是一个基于 Vue.js 开发的轻量级 toast 弹窗组件,提供了丰富的配置选项,让开发者能够快速创建适合自己项目的提示信息。

    4 年前
  • npm 包 optimat-vue-libs 使用教程

    介绍 optimat-vue-libs 是一款 Vue.js 组件库,提供了一些常用的 UI 组件和工具函数,使开发者们能够更加高效地进行前端开发。 优化的目标就是让配置项更少、使用成本更低。

    4 年前
  • npm 包 optimat-vue-input-dialog 使用教程

    在前端开发中,弹出框是常用的交互组件。而为了提升开发效率,我们可以借助市面上已经成熟的 npm 包。其中 optimat-vue-input-dialog 是一个基于 Vue.js 框架的弹出框组件,...

    4 年前
  • npm 包 optimat-vue-selector-dialog 使用教程

    optimat-vue-selector-dialog 是一个 Vue.js 的 Component 组件,用于生成可定制的选择器弹窗,支持多选,单选和搜索功能。本篇文章将详细介绍如何在前端应用中使用...

    4 年前
  • npm 包 optimat-vue-loading 使用教程

    前言 在现代 Web 应用程序开发中,前端 Loading 组件不仅为用户提供了更好的用户体验,也能帮助我们优化我们的应用程序性能。今天,我将介绍一个名为 optimat-vue-loading 的 ...

    4 年前
  • npm 包 @xyluet/objection-table-name 使用教程

    简介 @xyluet/objection-table-name 是一个基于 objection.js 的插件,它可以自动将查询中的表名转换为指定格式的表名,提供了极大的便利性,减少了手动修改表名的繁琐...

    4 年前
  • npm 包 optimat-vue-page-selector 使用教程

    前言 optimat-vue-page-selector 是一个基于 Vue.js 的分页组件,它能够快速的实现前端页面的分页功能。本文将详细介绍 optimat-vue-page-selector ...

    4 年前
  • npm 包 dag-solve 使用教程

    什么是dag-solve dag-solve是一个npm包,它提供了一种在有向无环图中对拓扑排序进行求解的方法。它可以帮助前端开发人员管理依赖,优化代码执行顺序,并提升应用程序的性能和稳定性。

    4 年前
  • npm 包 optimat-vue-utils 使用教程

    简介 npm 包 optimat-vue-utils 是一个基于 Vue.js 的工具类库,旨在为 Vue.js 开发人员提供方便快捷的开发工具和帮助。核心功能包括了数据处理、路由管理、表单校验、组件...

    4 年前
  • npm 包 react-simplified-modal 使用教程

    前言 在前端开发中,弹出层(Modal)是一个非常常见的功能,但是实现弹出层并不是一件简单的事情,通常需要耗费大量的时间和精力,让开发者不免感到头痛。为此,社区出现了很多优秀的 Modal 组件库,其...

    4 年前
  • npm 包 @chuidylan/huaban-node 使用教程

    简介 @chuidylan/huaban-node 是一个基于 Node.js 开发的工具包,用于操作花瓣网的 API 接口。通过使用该包,您可以快速方便地获取和修改花瓣网上的图片、画板、关注等信息。

    4 年前
  • npm 包 ui-template 使用教程

    在前端开发的过程中,通常需要构建一个美观的 UI 界面。这个时候,我们需要使用到一些 UI 模板,以提高我们的开发效率。在这里,我们将介绍一个非常实用的 npm 包:ui-template,它提供了一...

    4 年前
  • npm 包 @nbyodai/tini 使用教程

    前言 在前端开发中,我们经常需要使用一些工具和库来提高开发效率和代码质量。其中,npm 是一个非常重要的工具,它是 Node.js 的包管理工具,可以方便地搜索、安装和管理第三方库和工具。

    4 年前

相关推荐

    暂无文章