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