stf设备集群管理

人走茶凉 提交于 2019-11-28 18:56:27

移动设备多了之后不易管理, 如下需求: 1、手机综合控制, 2、实时交互, 3、远程控制; 

一、安装过程:

1、首先确认安装基础:

node -v
npm -v
java -version
adb version

安装db:   brew uninstall rethinkdb graphicsmagick zeromq protobuf yasm pkg-config

安装stf:   npm install -g stf

报错1:提示权限问题,

使用sudo安装后还是报错:

 

解决办法: 安装stf过程中  遇到node权限问题, 后经查询 将系统的node管理改成.nvm管理  

安装nvm  :  curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash

  501  nvm ls-remote       # 查看目前node版本

  502  nvm install v12.9.1  #安装一个版本

  503  nvm install v11.0.0

  504  nvm ls              #查看本地安装的node版本

  505  nvm alias default v11.0.0  #切换node版本

 

问题2: 使用nvm安装还是报错:

后经查询,使用node版本不能过高,改成v8.14.0 后,安装成功

 

二、使用stf:

启动stf:  

rethinkdb
stf local

输入本地浏览器:localhost:7100

 

练习: 1、使用一台本地机作为远程机部署stf    (本地链接局域网主机命令 open vnc 192.168.x.x)

       2、远程机通过hub链接移动设备群  

       3、本地机通过远程链接脚本链接stf获取到移动设备list ,获取远程adb,启动本地appium 根据申请的多设备给本地appium传多组caps;   (远程机部署stf  adb)

       4、远程部署jenkins,把本地机作为节点配置;通过adb在申请的多个移动设备上顺序或并行执行自动化测试  执行本地机appium appcrawler等自动化测试

1、远程机启动stf  本地启动appium  获取StfToken

 

2、复制stf的api控制脚本

```

#!/usr/bin/env bash

#STF_TOKEN=9d06d1b4dae94c88863138bac8bf50369be151b812a44215b19e0b4f137b13fb
STF_TOKEN=fa46cb5aff944731a5cf88491b5b02a54125c9711d3741c2b160e3ceaea3928d
#STF_URL=http://localhost:7100
STF_URL=http://192.168.1.50:7100
DEVICE_SERIAL="demo"

function add_device
{
response=$(curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer $STF_TOKEN" \
--data "{\"serial\": \"$DEVICE_SERIAL\"}" $STF_URL/api/v1/user/devices)

success=$(echo "$response" | jq .success | tr -d '"')
description=$(echo "$response" | jq .description | tr -d '"')

if [ "$success" != "true" ]; then
echo "Failed because $description"
echo exit 1
fi

echo "Device $DEVICE_SERIAL added successfully"
}

function remote_connect
{
response=$(curl -X POST \
-H "Authorization: Bearer $STF_TOKEN" \
$STF_URL/api/v1/user/devices/$DEVICE_SERIAL/remoteConnect)

success=$(echo "$response" | jq .success | tr -d '"')
#增加一个拉取的设备名字的变量,方便后面并行执行
remote_device=$(echo "$response" | jq .remoteConnectUrl | tr -d '"')
description=$(echo "$response" | jq .description | tr -d '"')

if [ "$success" != "true" ]; then
echo "Failed because $description"
echo exit 1
fi
remote_connect_url=$(echo "$response" | jq .remoteConnectUrl | tr -d '"')

adb connect $remote_connect_url

echo "Device $DEVICE_SERIAL remote connected successfully"
}

function remove_device
{
response=$(curl -X DELETE \
-H "Authorization: Bearer $STF_TOKEN" \
$STF_URL/api/v1/user/devices/$DEVICE_SERIAL)

success=$

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!