移動設備多了之后不易管理, 如下需求: 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/