关于自动化测试:精简版stf基于adbkit的android设备管理

127次阅读

共计 1565 个字符,预计需要花费 4 分钟才能阅读完成。

起因是看到 stf(设施治理平台)有开源了 adbkit 这个精简的 adb 交互库,又感觉部署 stf 太麻烦了,就想着用 adbkit 实现一个精简的设施治理,用于自动化测试
先提供一个思路

后期
首先这是一个 node 我的项目,先引入 adbkit

npm install adbkit --save

监听设施
把多个 android 手机插入同一台电脑,如果每次都用 adb devices 去查问,未免有些太过麻烦,而 adbkit 提供了监听的办法

const client = AdbInteraction.getInstance().getClient()
client.trackDevices().then((tracker) => {tracker.on("add", async (device) => {console.log(device.id)
  }
}

其中的 device.id 就是设施的 serial 号(即 adb devices 中的 id)

设施治理
当设施连贯后,能够在监听事件中对设施调配一个端口,并绑定端口

const client = AdbInteraction.getInstance().getClient()
const bridge = {}
client.trackDevices().then((tracker) => {tracker.on("add", async (device) => {
    // 指定一个端口,或者能够写一个办法去调配
    const availablePort = 3000
    // 创立一个 adb usb 连贯
    bridge[serial] = client.createTcpUsbBridge(serial, { auth: () => Promise.resolve()})
    // 绑定端口
    bridge[serial].listen(availablePort).on("error", (e) => {console.log("err" + e)
    })
    // 设施信息写入数据库
    // 如 serial 号,port 号
  }
}

这里咱们假如调配 3001 端口给刚刚连贯到的设施,间接执行命令

adb connect ip:3001

这里的 ip 是插着 android 设施的那台主机,这样咱们就胜利连贯了设施

治理多个设施
依照这个思路,咱们能够同时开发出一套服务,通过调用接口来查问以后连贯着的设施
咱们选用 koa2 的框架

git clone https://github.com/javieraviles/node-typescript-koa-rest.git

而后进行这个我的项目的教学进行惯例部署

npm install
npm run watch-server

在 controller 层定义接口(有点像 spring)
咱们能够从 controller 定义一个接口,去从数据库中读取咱们方才保留过的数据

@request("get", "/devices")
@summary("Find devices")
public static async deviceList(ctx: any): Promise<void> {console.log(ctx.query.biz)
  ctx.status = 200;
  // 这里的数据来源于数据库,可自定义实现
  ctx.body = DeviceDbManager.getInstance().fetchDeviceList();
}

咱们能够返回这样的格局

[
  {
  "serial": "#####",
  "ip": "192.168.x.x",
  "port": 3001,
  "connStatus": 1,
  "updateTime": "2023-08-31T04:53:55.113Z"
  }
]

至此就能够实现一个简略的设施治理,查问
也能够对设施进行借用、开释等操作

残缺的我的项目也在这个地址分享
https://github.com/sonar-su/android-device-manager

正文完
 0