代码改变世界

STF一机多控版(android版)安装部署手册

2021-04-25 18:52  Tanwheey  阅读(1895)  评论(0编辑  收藏  举报

stf简介:

 

 

环境:mac 电脑

依赖 Python3.6+NodeJS 8

$  brew install node 

NodeJS版本太高了也不行,一定要NodeJS 8,推荐使用nvm管理node版本

1、 安装adb环境,记得配置环境变量。

正常应该看到如下:

 

 

 nodejs 版本(需要8.X.0版本,是基于8.XX开发的,新的node可能会出现兼容问题): 8.14.0

 

 

在安装过程中,出现错误:npm ERR! code ETARGET,先查看版本是否存在(访问命令行中地址,下载成功,版本存在),再查看镜像是否是公司镜像,如是,请更新镜像为 https://registry.npmjs.org, 重新安装成功。

$npm config get registry

$npm config set registry https://registry.npmjs.org

node升降级方法:

$sudo npm install n -g

$sudo n 8.X.0   # X为你想要的版本
安装匹配版本的npm:
$ cnpm install npm@6.4.1 -g

2、 检查是否安装brew(如按步骤1安装的adb应该已装brew):brew -v

 

 

 3、Git配置SSH Key:

生成密钥#ssh-keygen -t rsa -C "git注册邮箱"

查看密钥#cat /Users/cdtanghui3/.ssh/id_rsa.pub

Git中填写密钥:

 

 

 测试#ssh -T git@github.com,如出现以下提示即配置成功。

 

 

 4、 选择最新git包(Batch control based on STF support Mac/Linux,基于stf二次开发群控管理平台,支持Mac,Linux部署,一机多控):https://github.com/EasilyTest/stf.git

本地新建stf路径后进入该文件夹中,

$git clone https://github.com/EasilyTest/stf.git

5、 安装 brew 以及nodejs后,运行以下命令, 安装stf依赖包:

$cd /

$ pip3 install -U "tidevice[openssl]"  #如安装报错,使用下述命令安装,使用python3.6+版本下载安装,如版本小于3.6,brew install python安装最新版

$pip3 install -U tidevice #阿里内部小组用来做 iOS 自动化用的工具

$brew uninstall --ignore-dependencies XXX #如有安装老版本,请卸载后安装

$brew install --HEAD usbmuxd #USBMuxd连接方式不需要做MFI认证,支持iPhone上的App跟外设通过进行通信

$brew unlink XXX #如有安装老版本,请先去链接绑定

$brew link usbmuxd

$brew install --HEAD libimobiledevice #libimobiledevice 是一个跨平台的软件库,支持 iPhone®, iPod Touch®, iPad® and Apple TV® 等设备的通讯协议。

$brew install --HEAD ideviceinstaller #管理iOS设备上应用程序的安装与卸载,以及查看相关信息。 

$brew install carthage #提供OS X平台的pkg安装文件,管理iOS三方库。

$brew install socat #实现远程DEBUG

$brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config #安装rethinkdb

$brew install --cask android-platform-tools #安装adb,如步骤1已安装,此命令不执行。

6、 进入stf路径下修改文件

 

 

(1)在package.json中,将"node-sass",从"^3.13.1",改为"^4.13.1”。

(2)在bower.json中,将“ ng-context-menu”从“ AdiDahan / ng-context-menu#~1.0.5”更改为“ swimlane/ng-context-menu#~1.0.1”。

7、 进入stf根目录(安装依赖)

   $npm install –unsafe-perm

     如果没报错继续下一步。否则跳转到第10步。

8、更新依赖关联

    $npm link

9、检查stf环境

    $stf doctor

 

执行遇见问题:ERR/cli:doctor 80758 [*] Unexpected error checking ZeroMQ: Error: Could not locate the bindings file. Tried:

解决方法:$npm rebuild

再次$stf doctor,成功

 

 

 8、 启动stf

$stf local

报错:

2021-04-25T08:30:35.107Z FTL/db 82194 [*] No hosts left to try

2021-04-25T08:30:35.107Z FTL/util:lifecycle 82194 [*] Shutting down due to fatal error

 

/Users/cdtanghui3/Downloads/STF/stf/node_modules/bluebird/js/main/promise.js:680

            throw e;

            ^

ExitError: Exit code "1"

    at ChildProcess.<anonymous> (/Users/cdtanghui3/Downloads/STF/stf/lib/util/procutil.js:49:23)

    at emitTwo (events.js:126:13)

    at ChildProcess.emit (events.js:214:7)

at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)

原因:可能没有启动rethinkdb命令。

解决办法:$rethinkdb& #启动rethinkdb

 

 再次$ stf local,启动成功

9、一机多控

 

 

 10、问题处理(终极解决方法)

在stf根目录下,执行命令:$npm list --depth=0

对比自己的版本和下面的版本是否一致。优先对比红色字体部分。

步骤为:

$npm uninstall XXX

$npm install XXX@xxx

或npm audit fix

├── @slack/client@3.16.0

├── adbkit@2.11.1

├── adbkit-apkreader@3.2.0

├── adbkit-monkey@1.0.1

├── android-device-list@1.2.3

├── async@2.6.3

├── aws-sdk@2.744.0

├── basic-auth@1.1.0

├── bluebird@2.11.0

├── body-parser@1.19.0

├── bower@1.8.8

├── bplist@0.0.4

├── bufferutil@1.3.0

├── chai@3.5.0

├── chalk@1.1.3

├── compression@1.7.4

├── cookie-session@2.0.0-rc.1

├── css-loader@0.23.1

├── csurf@1.11.0

├── debug@2.6.9

├── del@2.2.2

├── eslint@3.19.0

├── event-stream@3.3.5

├── eventemitter3@1.2.0

├── exports-loader@0.6.4

├── express@4.17.1

├── express-validator@2.21.0

├── extract-text-webpack-plugin@1.0.1

├── file-loader@0.9.0

├── file-saver@1.3.3

├── formidable@1.2.2

├── fs-extra@8.1.0

├── gm@1.23.1

├── gulp@3.9.1

├── gulp-angular-gettext@2.3.0

├── gulp-eslint@3.0.1

├── gulp-jsonlint@1.3.2

├── gulp-protractor@3.0.0

├── gulp-pug@3.3.0

├── gulp-run@1.7.1

├── gulp-util@3.0.8

├── hipchatter@0.3.2

├── html-loader@0.4.5

├── http-https@1.0.0

├── http-proxy@1.18.1

├── images@3.2.3

├── imports-loader@0.6.5

├── in-publish@2.0.1

├── jasmine-core@2.99.1

├── jasmine-reporters@2.3.2

├── jpeg-turbo@0.4.0

├── json-loader@0.5.7

├── jws@3.2.2

├── karma@1.7.1

├── karma-chrome-launcher@2.2.0

├── karma-firefox-launcher@1.3.0

├── karma-ie-launcher@1.0.0

├── karma-jasmine@2.0.1

├── karma-junit-reporter@1.2.0

├── karma-opera-launcher@1.0.0

├── karma-phantomjs-launcher@1.0.4

├── karma-safari-launcher@1.0.0

├── karma-webpack@1.8.1

├── ldapjs@1.0.2

├── less@2.7.3

├── less-loader@2.2.3

├── lodash@4.17.21

├── markdown-serve@0.3.3

├── memory-fs@0.3.0

├── mime@1.6.0

├── minicap-prebuilt-beta@2.4.0

├── minimatch@3.0.4

├── minitouch-prebuilt-beta@1.3.0

├── my-local-ip@1.0.0

├── ng-context-menu@0.1.1

├── node-libs-browser@1.1.1

├── node-sass@4.14.1

├── node-unzip-2@0.2.8

├── openid@2.0.7

├── passport@0.3.2

├── passport-oauth2@1.5.0

├── passport-saml@0.15.0

├── phantomjs-prebuilt@2.1.16

├── please-update-dependencies@2.0.0

├── protobufjs@3.8.2

├── protractor@5.4.4

├── protractor-html-reporter-2@1.0.4

├── proxy-addr@1.1.5

├── pug@2.0.4

├── raw-loader@0.5.1

├── request@2.88.2

├── request-progress@2.0.1

├── request-promise@4.2.6

├── rethinkdb@2.4.2

├── sass-loader@4.1.1

├── script-loader@0.7.2

├── semver@5.7.1

├── serve-favicon@2.5.0

├── serve-static@1.14.1

├── sharp@0.22.1

├── sinon@1.17.7

├── sinon-chai@2.14.0

├── sleep@6.3.0

├── socket.io@2.3.0

├── socket.io-client@1.4.8

├── split@1.0.1

├── stf-appstore-db@1.0.0

├── stf-browser-db@1.0.2

├── stf-device-db@1.2.0

├── stf-syrup@1.0.0

├── stf-wiki@1.0.0

├── style-loader@0.13.2

├── swagger-express-mw@0.7.0

├── swagger-tools@0.10.4

├── teen_process@1.15.0

├── temp@0.8.4

├── template-html-loader@0.0.3

├── then-jade@2.4.4

├── transliteration@1.6.6

├── url-join@1.1.0

├── url-loader@0.5.9

├── utf-8-validate@1.2.2

├── uuid@3.4.0

├── UNMET PEER DEPENDENCY webpack@1.15.0

├── webpack-dev-server@3.11.0

├── ws@3.3.3

├── yargs@6.6.0

└── zmq@2.15.3

11、

ios 不显示问题

通过查看源代码发现,这里代码里面写死了wda包名。需要修改为手机上安装的wda的包名。

 

 机上安装的wda的包名查看方式:先找到webdriveragent app,使用命令:

 %  ideviceinstaller -l|grep 'WebDriverAgentRunner-Runner'

或者在xcode中查看:

 

 

 

12、其他问题

(1)zmq 未绑定

在stf根目录:

npm install --save zmq

echo 'require("zmq")' | node

cd node_modules/zmq/; node-gyp configure

(2)执行stf 命令,提示权限不足

chmod 777 路径

(3)移除stf/node_modules

npm install rimraf -g

rimraf node_modules

(4)stf 卸载

npm uninstall -g stf