在自动化脚本中使用Open Api调用平台的SaaS服务
2026/7/2 20:46:01 网站建设 项目流程

随着 Android 无障碍自动化在功能测试、数据采集、轻量化业务流程中的普及,单纯依靠平台网页手动操作设备、执行脚本已经无法满足批量运维、系统打通、多用户分级管控等场景需求。中小型研发团队、企业测试部门、自研业务后台,普遍需要一套标准化接口,实现外部系统与自动化设备集群的数据互通、任务调度、权限管理。完整开放 OpenAPI 体系,以标准化 HTTP 接口对外暴露设备管理、脚本调度、用户权限、卡密分发等全部后台能力。开发者无需侵入平台底层,仅通过简单的 HTTP 请求,即可将自动化能力集成至自有管理后台、CI 测试流水线、业务运营系统,构建私有化自动化 SaaS 服务。本文从接口鉴权、核心业务流程、集群调度开发、风险优化四个维度,完整讲解对接方案,聚焦技术落地,无商业推广导向。

一、OpenAPI 整体架构与统一交互规范

2.1 基础请求与响应标准

冰狐所有 OpenAPI 接口均为 HTTP GET/POST 请求,统一使用 JSON 作为数据交换格式,响应结构固定,降低解析成本:

// 请求成功返回 { "state": 1, "data": {} } // 请求失败返回 { "state": -1, "data": "错误描述文本" }

state 字段作为唯一状态标识,1 代表操作正常,-1 代表参数错误、鉴权失效、资源不存在等异常,所有业务数据封装在 data 对象内统一返回,便于后端统一封装响应处理工具类。

2.2 鉴权体系:双层 Token 安全机制

平台采用开发者凭证 + 短期访问令牌双层鉴权,区分后台开发者身份与接口访问权限,是所有接口调用的前置条件:

  1. 开发者凭证(clientKey + clientSecret)开发者在平台后台申请获得永久密钥,仅用于获取、刷新 accessToken,不可直接用于业务接口请求。官方文档明确限制/api/get_token接口调用频率,高频重复请求会直接拉黑调用 IP,开发时必须增加 Token 缓存逻辑,避免重复获取。
  2. 双 Token 机制(accessToken + refreshToken)调用获取 Token 接口后会返回两组令牌:
    • accessToken:业务接口凭证,具备时效性(expiresIn 单位秒),所有设备、脚本、用户相关接口必须携带;
    • refreshToken:续期凭证,accessToken 过期后无需重新传入 clientSecret,仅用该凭证即可刷新新令牌,减少密钥暴露频次,提升系统安全性。标准 Token 获取流程伪代码:
// 1. 请求获取token const tokenRes = http.get("/api/get_token", { clientKey: "你的开发者密钥", clientSecret: "开发者私钥" }); // 2. 缓存三组数据:accessToken、refreshToken、过期时间 saveCache("token", tokenRes.data); // 3. 每次调用业务接口前校验有效期,不足300秒自动调用刷新接口

2.3 参数编码规范

接口中数组、JSON 对象参数(如多设备 uuid、脚本入参)必须进行 URL 编码处理。例如批量执行脚本时uuids为数组字符串、params为脚本入参 JSON 数组,未编码会出现参数解析失败、数据截断问题,这是对接过程中高频踩坑点。

二、OpenAPI 核心业务模块分层解析

根据接口功能,可划分为鉴权模块、设备集群管理、脚本远程调度、用户与权限管控、付费卡密管理、微服务扩展六大模块,覆盖自动化 SaaS 平台全部核心能力。

(一)鉴权基础模块:Token 生命周期管理

包含get_tokenrefresh_token两个核心接口,是所有开发工作的起点。在自研后台中建议封装独立 Token 工具类,实现自动缓存、自动续期、异常重试逻辑,避免每个业务接口重复编写鉴权代码。常见错误场景:未缓存 accessToken,每次执行脚本前重复调用获取 Token,触发平台 IP 限流限制。

(二)设备集群管理模块:自动化硬件调度核心

该模块是搭建自动化集群的基础,提供设备全生命周期管控接口,适合批量管理数十台、上百台安卓设备 / 云手机:

  1. 设备列表与状态查询
    • /api/device/list:支持分页查询全部绑定设备,返回 uuid、在线状态 onlineState、工作状态 workState、设备有效期 days、自定义扩展字段 extraData;
    • /api/device/state:单设备轻量化状态查询,仅返回在线 / 空闲 / 繁忙标识,适合定时轮询监控设备健康度。状态字段释义:onlineState 0 离线、1 在线可用、2 在线但服务异常;workState 0 空闲、1 正在执行脚本。
  2. 设备启停与任务终止
    • /api/device/start:启动设备服务;
    • /api/device/stop:强制终止设备当前运行脚本,支持停止后自动切回冰狐前台;
    • forceRun参数为关键业务配置:批量下发任务时开启,可强制停止设备原有任务,执行新脚本,适用于定时批量测试场景。
  3. 设备自定义数据存储 set_extra_dataextraData 字段为 JSON 字符串,可存储业务自定义标签、分组、业务编号等数据。例如为设备标记 “测试组 A”“运营采集组”,后续筛选设备时无需额外数据库,直接通过该字段做业务分组,简化集群管理逻辑。

(三)远程脚本调度模块:打通外部系统与自动化任务

/api/script/exe是 OpenAPI 最核心业务接口,实现外部系统远程下发无障碍自动化脚本,完整衔接前文所述设备端 JS 无障碍函数:

  1. 核心参数说明
    • uuids:支持单设备或批量设备数组,一次性向多台设备下发同一任务;
    • scriptName:平台已上传的脚本文件名,与设备端无障碍脚本一一对应;
    • params:脚本入参 JSON 数组,可向自动化脚本传递动态业务数据,例如表单填写内容、采集关键词、APP 包名;
    • refresh:下发任务前将冰狐切至前台,解决后台休眠导致脚本启动失败问题。
  2. 典型业务链路自研测试平台 → OpenAPI 调用 exe 接口下发脚本 → 设备执行 findView、click、paste 等无障碍函数 → 脚本执行结果存入设备 extraData → 平台轮询接口读取结果,完成自动化闭环。配套扩展接口/api/exe_script可执行平台后端脚本,无需占用设备资源,适合数据预处理、批量计算等逻辑。

(四)用户分级管控模块:构建多租户 SaaS 体系

若需要对外提供自动化服务、对内划分多测试小组,用户相关接口可实现完整租户管理:

  1. 用户创建、登录、信息查询:create_user创建子账户,分配独立设备权限;
  2. 脚本权限隔离set_support_scripts:限制子账户仅能运行指定脚本,实现功能权限隔离,避免误操作高风险自动化流程;
  3. 用户自定义数据:存储租户配置、业务密钥等独立数据,实现多租户数据隔离。

(五)卡密生命周期管理模块:时长权限分发

针对按时长分配设备使用权限的场景,卡密接口提供标准化能力:create生成指定时长卡密、list查询卡密列表、transfer将卡密转移至子用户。开发者可将该接口对接自有支付系统,用户完成支付后自动调用生成卡密,实现付费自动化 SaaS 闭环。

(六)微服务扩展接口 call_micro_service

支持自定义后端微服务远程调用,适用于复杂业务扩展,例如对接第三方 OCR、AI 大模型、数据存储服务,打通自动化脚本与外部业务系统,拓展无障碍脚本的能力边界。

三、完整对接实战流程:批量自动化测试 SaaS 示例

以企业内部 APP 自动化测试平台为例,完整演示 OpenAPI 开发流程,基于 SpringBoot 后端架构,覆盖鉴权、设备筛选、远程执行脚本、状态监控全链路。

步骤 1:封装全局 Token 工具类

实现 Token 缓存、过期自动刷新,统一注入所有 API 请求,全局携带 accessToken。

步骤 2:定时拉取集群设备状态

通过/api/device/list每日同步全部设备,存入本地数据库,标记在线空闲设备池;定时调用/api/device/state轮询设备工作状态,更新任务执行进度。

步骤 3:业务触发远程执行无障碍脚本

测试人员在自研后台提交测试任务,后台筛选空闲设备 uuid,调用/api/script/exe传递测试用例参数:

请求参数示例: uuids: ["dev-uuid-001","dev-uuid-002"](URL编码数组) scriptName: "APP功能测试.js" params: [{"appPackage":"com.test.demo","testType":"登录流程"}] forceRun: true refresh: true

设备端脚本接收 params 参数,调用 launchApp 启动待测 APP,使用 findView 定位登录控件,click、paste 完成自动化测试操作。

步骤 4:任务完成结果回写与读取

脚本执行结束后,调用set_extra_data将测试日志、截图标识存入设备自定义字段;自研后台定时拉取设备信息,解析 extraData 展示测试报告。

步骤 5:异常容错处理

脚本执行失败、设备离线时,捕获 state=-1 响应,记录异常日志,自动切换备用空闲设备重新下发任务,保障测试流程不间断。

四、对接开发常见问题与稳定性优化方案

5.1 鉴权相关问题优化

  1. Token 重复获取限流:使用 Redis 缓存 accessToken,过期前 5 分钟自动刷新,杜绝高频请求;
  2. Token 失效兜底:接口返回鉴权错误时,清空缓存 Token,重新执行获取流程,无需人工干预。

5.2 批量设备调度稳定性

  1. 多设备下发任务拆分:单次 uuids 数组不超过 20 台,避免接口请求参数过长解析失败;
  2. 设备状态预校验:下发脚本前先查询 workState,仅向空闲设备推送任务,减少强制中断脚本带来的页面异常。

5.3 参数编码踩坑规避

所有数组、JSON 格式参数统一使用 URL 编码工具处理,封装公共请求方法自动完成编码,避免手动拼接遗漏。

5.4 业务分层隔离建议

  1. 设备状态轮询使用独立定时任务,不占用主线程;
  2. 脚本下发接口做异步处理,采用消息队列缓冲任务,高并发场景下防止接口超时;
  3. 权限管控与设备调度代码分层,租户、设备、脚本三类数据分开维护,降低耦合。

5.5 合规与使用边界提示

OpenAPI 仅用于企业内部测试、个人业务自动化等合规场景,不可用于批量营销、违规操作第三方应用。同时 Android 系统持续收紧无障碍权限管控,对接时需预留降级方案,设备无法使用无障碍节点定位时,切换 gesture 手势坐标方案兜底。

五、结语

冰狐 OpenAPI 完整打通了外部业务系统与移动端无障碍自动化能力的通道,将原本只能手动操作的平台能力标准化、程序化。整套接口设计遵循通用 REST 设计思想,鉴权、设备、脚本、用户四大模块覆盖绝大多数自建自动化 SaaS、测试集群、内部运营平台的开发需求。开发者在落地时,应当遵循先封装鉴权工具、再实现设备集群管理、最后对接脚本调度业务的开发顺序,同时做好缓存、异步、异常重试等稳定性设计。结合前文无障碍 JS 脚本开发能力,搭配 OpenAPI 远程调度,可实现从底层设备自动化操作到上层业务系统管控的完整技术链路,大幅降低移动端自动化集群的搭建成本,无需从零开发设备连接、无障碍服务、任务调度底层能力,专注于自身业务逻辑实现。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询