Jpptr文档

一个使用 json 语法糖去执行 puppeteer 的框架。
你可以使用 json 去执行 puppeteer , 就像使用 javascript 去执行 puppeteer 一样

安装

1
npm install jpptr

使用命令行

1
2
3
4
5
6
# 执行 jpptr 的配置文件
npx jpptr <file> [options]
# 执行单个带有动作的文件
npx jpptr exec <file> [options]
# 查看帮助
npx jpptr -h

启动配置文件

1
2
3
4
# 启动配置文件, 默认的文件为 jpptr.config.json
npx jpptr
# 如果配置文件不存在,请给出路径
npx jpptr ./src/jpptr.config.json

启动单个动作文件

1
npx jpptr exec ./test.json

ESM

启动配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { Jpptr } from "jpptr";
import path from "path";

(async () => {
/**
* 启动配置文件
* 如果你的配置文件不是在根目录,请添加 __dirname 去定位文件的路径
* 或者使用 cwd 选项
* ```js
* await Jpptr.launch("./jpptr.config.json",{cwd:__dirname});
* ```
*/
await Jpptr.launch("./jpptr.config.json");
})();

启动单个文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { Jpptr } from "jpptr";
import path from "path";

async function start() {
/**
* 实例化 jpptr
* 如果你的json动作文件不是在根目录,请添加 __dirname 去定位文件的路径
* 或者使用 cwd 选项
* ```js
* const jpptr = Jpptr.from("./test.json",{cwd:__dirname});
* ```
*/
const jpptr = Jpptr.from("./test.json");
/** 启动浏览器 */
const execute = await jpptr.createExecutor();
/** 执行全部动作 */
await execute.executeAll();
}

start();

commonjs

使用 require , 其余操作跟 ESM 一样

1
2
3
// @ts-check
const { Jpptr } = require("jpptr");
const path = require("path");

配置文件

配置文件用于指定需要执行的动作文件,以及一些全局配置

jpptr.config.json
1
2
3
4
5
6
{
"name": "my jpptr config",
"version": "1.0.0",
"include": ["./src/**/*.json", "./test.json"],
"exclude": ["node_modules/**/*"]
}

动作文件

一般带有 launch 启动参数,以及 actions 动作列表,的 json 文件,我们称为动作文件

  • launch : puppeteer 启动参数

  • actions : 动作列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
/** puppeteer 启动参数 */
"launch": {
"executablePath": "C:/Program Files/Google/Chrome/Application/chrome.exe",
"defaultViewport": null,
"headless": false
},
"actions": [
/** 跳转网址 */
["goto", "https://enncy.github.io/jpptr/test.html"],
/** 填写表单 */
["type", "#username", "enncy"],
/** 填写表单 */
["type", "#password", "123456"],
/** 提交表单 */
["click", "#submit"],
/** 等待3秒 */
["waitForTimeout", 3000]
/** 关闭浏览器 */
["close"]
]
}

动作(Actions)

动作是 jpptr 的核心事件

一个动作对应着浏览器中的操作,例如点击,输入,跳转

动作可以表示成一个数组 : [puppeteer 方法, …方法的其余参数]

1
["goto", "https://enncy.github.io/jpptr/test.html"]

jpptr 会使用 ArrayParser 将其解析成可以执行的动作对象

1
2
3
4
5
{
"use": "function",
"name": "goto",
"args": ["https://enncy.github.io/jpptr/test.html"]
}

其中

  • use : 是使用插件
  • function : 是 方法插件 专门执行 puppeteer 的方法
  • name : 是 puppeteer 的方法名
  • args : 是 puppeteer 方法名的参数列表

详细文档 : /jpptr-docs/action/

解析器(Parser)

解析器用于解析 动作文件

详细文档 : /jpptr-docs/parser/

插件(Plugin)

  • 插件也可以解析 动作文件
  • 插件有控制 puppeteer 的权限, 例如 browser, page, frame 等
  • 插件可以返回新的 browser, page, frame 以及 actions(子动作)
  • jpptr 会根据返回的 actions 继续生成新的动作,并且执行

详细文档 : /jpptr-docs/plugin/

作者

言小溪

发布于

2022-01-24

更新于

2022-01-24

许可协议

CC BY-NC-SA 4.0

评论