1.0.3 • Published 3 months ago

@szjy/spread-tool v1.0.3

Weekly downloads
-
License
ISC
Repository
-
Last release
3 months ago

spread-tool

一个简单易用的命令行工具,用于自动化浏览器登录和页面访问。支持 token 方式登录。

安装

npm install -g @szjy/spread-tool

使用方法

基本命令格式:

spread-tool -l <目标地址> -t <登录令牌>

参数说明

  • -l, --targetUrl: 目标页面地址(必填,格式:http://hostname:port/projectId/xxx/xxx)
  • -t, --token: 登录令牌(必填)
  • -k, --keep: 保持浏览器窗口打开(可选,默认自动关闭)

使用示例

# 示例 1:访问页面后自动关闭浏览器
spread-tool -l  "http://172.17.114.123:30012/KZGSBIM/project/workflow/auto-tool/excel-to-pdf?auto=true&keys=791701453658914816,792047977693708288" -t your-token-here

# 示例 2:访问页面后保持浏览器窗口打开
spread-tool -l  "http://172.17.114.123:30012/KZGSBIM/project/workflow/auto-tool/excel-to-pdf?auto=true&keys=791701453658914816,792047977693708288" -t your-token-here -k

功能说明

  1. 自动解析目标地址,提取项目标识符
  2. 自动构造登录地址并使用 token 进行登录
  3. 等待登录完成后自动跳转到目标页面
  4. 智能等待页面处理完成后自动关闭
  5. 全程自动化操作,无需人工干预

工作流程

  1. 从目标URL中提取项目标识符和基础URL
    • 例如:从 http://example.com/aaa/123/dashboard
    • 提取项目标识符 aaa
    • 构造基础URL http://example.com/aaa
  2. 构造登录URL:{baseUrl}/login?token={token}
  3. 自动访问登录页面并等待登录完成(3秒)
  4. 自动跳转到目标页面
  5. 等待页面处理完成
    • 监听页面中 id 为 webdriverCloseTag 的元素
    • 当元素内容为 true 时,自动关闭浏览器
    • 如果 1 小时内未收到关闭信号,将超时退出
    • 每 20 秒检查一次关闭信号

URL 格式说明

目标URL需要符合以下格式:

  • http(s)://hostname[:port]/projectId/...
  • 其中 projectId 是项目标识符,可以是任意有效的路径名
  • 项目标识符后面必须至少包含一个路径段

开发说明

本工具使用了以下主要依赖:

  • commander: 用于解析命令行参数
  • chalk: 用于美化命令行输出
  • webdriverio: 用于浏览器自动化操作

自动关闭机制

工具会监听页面中的特定元素来决定何时关闭浏览器:

  1. 页面中需要包含一个 id 为 webdriverCloseTag 的元素
  2. 当页面处理完成时,将该元素的内容设置为 true
  3. 工具检测到信号后会自动关闭浏览器
  4. 如果使用 -k 参数,则忽略自动关闭机制

示例页面代码:

<div id="webdriverCloseTag">false</div>

<!-- 在处理完成后 -->
<script>
  document.getElementById('webdriverCloseTag').innerHTML = 'true';
</script>

注意事项

  • URL 必须包含有效的项目标识符
  • 登录令牌必须是有效的
  • 需要本地安装 Chrome 浏览器
  • 建议在安全的环境中使用此工具
  • 如果目标URL包含特殊字符(如逗号、空格等),请使用引号将整个URL包裹
  • 或者考虑对URL中的特殊字符进行URL编码
  • 目标页面需要正确实现关闭信号机制,否则工具将在 1 小时后超时退出

许可证

ISC

1.0.3

3 months ago

1.0.2

5 months ago

1.0.1

5 months ago

1.0.0

7 months ago