目录
Linux(CentOS7)搭建STF
安裝nodejs
安裝jdk
安裝Android-sdk-linux
普通搭建方式
(1) 安装rethinkdb数据库
(2) 安装graphicsmagick
(3) yasm安装
(4) libsodium安装
(5) Zeromq安装
(6) protobuf安装
(7) pkg-config安装
(8) stf安装
(9) Stf Doctor检测STF
(10) 启动rethinkdb
(11) 启动STF
Docker搭建方式
(1)安装docker
(2)拉取adb镜像
(3)拉取rethinkdb镜像
(4)拉取openstf/stf镜像
Mac搭建STF(兼容IOS设备)
(1) 安装brew
(2) 安装nodejs
(3) 安装jdk
(4) 安装android sdk
(5) 安装stf依赖
(6) 安装libimobiledevice等依赖工具
(7)下载WebDriverAgent源码
(8) 下载Stf源码
OpenSTF是一个手机设备管理平台,可以对手机进行远程管理、调试、远程手机桌面监控等操作。这个系统类似于目前很流行的云测服务比如Testin,虽然网页上提供的设备很像模拟器中的设备,但是实际上都是真机。
官方源码地址:https://github.com/openstf
OpenSTF是使用nodejs和angularjs开发,遵循apache licene2.0开源协议,用户可以对源码进行修改发布,
- 页面的HTML使用帕格模版引擎(.pug)
- 前端使用的是Angularjs
- 后端使用的是的NodeJS
- 数据库使用的是对象型数据库 Rethinkdb,采用的是json字符串格式保存数据
目录解读:
/.tx | transifex网站相关的配置,主要是用于其它语言翻译 |
/bin | 启动文件,其实是连接到lib/cli.js |
/docker | Docker的相关配置 |
/lib | 后端代码 |
/conf | 应该是mysql的配置文件,但是目前没有使用 |
/doc | 关于STF平台的说明 |
/test | 检测平台的状态 |
/vendor | 需要安装到手机上的应用或者服务 |
/node_modules | npm相关组件 |
/rethinkdb_data | rethinkdb的数据库文件 |
package.json | npm所需要的组件集,以json格式保存 |
………… | 其它说明文件与打包 |
Linux(CentOS7)搭建STF
安裝nodejs
- cd /usr/local
- mkdir node
- cd /usr/local/node
- wget https://nodejs.org/download/release/v8.14.0/node-v8.14.0-linux-x64.tar.gz
- tar -zxvf node-v8.14.0-linux-x64.tar.gz
- mv node-v8.14.0-linux-x64 node-linux-x64
配置环境变量:
- vim /etc/profile
在文件中增加如下内容:
- export NODE_HOME=/usr/local/node/node-linux-x64
- export PATH=$PATH:${NODE_HOME}/bin;
安装完后,查看版本号,是否安装成功
npm安装所在目录:cd /usr/local/node/node-v8.14.0-linux-x64/lib/node_modules/
之前安装了node10.x,可能是版本的问题,导致安装stf一直不成功,后面百度资料,降低node版本到8.14
安裝jdk
输入java -version,可以看到系统自带的OpenJDK版本信息。
rpm -qa | grep java
下面这几个可以删除, 例如:
- rpm -e --nodeps java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
检查是否已经删除成功
java -version
执行安装
- 下载JDK文件:/usr/local/node/download/jdk-8u141-linux-x64.tar.gz
- 解压JDK安装文件:tar xvzf jdk-8u141-linux-x64.tar.gz
- 移动JDK文件:mv jdk1.8.0_141 /usr/local/java
配置环境变量
- export JAVA_HOME=/usr/local/java/jdk1.8.0_141
- CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib
- export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin;
安裝Android-sdk-linux
- 下载文件:/usr/local/node/download/android-sdk_r24.2-linux.tgz
- 解压文件:tar xvzf android-sdk_r24.2-linux.tgz
- 移动文件:mv android-sdk-linux /usr/local/Android-SDK
配置环境变量
- export ANDROID_HOME=/usr/local/Android-SDK/android-sdk-linux
- export PATH=$PATH:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools;
上述执行,是没有包含SDK tools插件的, 可执行以下步骤获取:
安装sdk所有的插件:android update sdk --no-ui
普通搭建方式
(1) 安装rethinkdb数据库
- cd /usr/local
- mkdir supporters
- cd /usr/local/supporters
- wget http://download.rethinkdb.com/centos/7/`uname -m`/rethinkdb.repo -O /etc/yum.repos.d/rethinkdb.repo
- yum install rethinkdb
可参考:https://rethinkdb.com/docs/start-a-server/
(2) 安装graphicsmagick
- cd /usr/local/supporters
- wget https://iweb.dl.sourceforge.net/project/graphicsmagick/graphicsmagick/1.3.26/GraphicsMagick-1.3.26.tar.gz
- tar -zxvf GraphicsMagick-1.3.26.tar.gz
- cd GraphicsMagick-1.3.26/
- sudo ./configure --prefix=/usr/local/supporters/config/graphicsmagick
- sudo make
- make install
配置环境变量
- export GRAPHICS_MAGICK_HOME=/usr/local/supporters/config/graphicsmagick
- export PATH=$PATH:${GRAPHICS_MAGICK_HOME}/bin;
验证安装结果:
(3) yasm安装
- cd /usr/local/supporters
- wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
- sudo tar -zxvf yasm-1.3.0.tar.gz
- cd yasm-1.3.0
- ./configure --prefix=/usr/local/supporters/config/yasm
- sudo make
- sudo make install
配置环境变量
- export YASM_HOME=/usr/local/supporters/config/yasm
- export PATH=$PATH:${YASM_HOME}/bin;
查看安装结果:
(4) libsodium安装
- cd /usr/local/supporters
- wget https://download.libsodium.org/libsodium/releases/libsodium-1.0.18.tar.gz
- sudo tar xvf libsodium-1.0.18.tar.gz
- cd libsodium-1.0.18/
- sudo ./configure
- sudo make
- sudo make install
查看安装结果:
(5) Zeromq安装
- cd /usr/local/supporters
- wget https://github.com/zeromq/libzmq/releases/download/v4.2.2/zeromq-4.2.2.tar.gz
- sudo tar xvf zeromq-4.2.2.tar.gz
- cd zeromq-4.2.2/
- sudo ./configure --without-libsodium
- sudo make
- sudo make install
(6) protobuf安装
- cd /usr/local/supporters
- wget https://github.com/google/protobuf/releases/download/v3.5.0/protobuf-cpp-3.5.0.tar.gz
- sudo tar xvf protobuf-cpp-3.5.0.tar.gz
- cd protobuf-3.5.0/
- sudo ./configure --prefix=/usr/local/supporters/config/protobuf
- sudo make
- sudo make install
配置变量:
vim /etc/profile
在文件中增加如下内容:
- export PROTOBUF_HOME=/usr/local/supporters/config/protobuf
- export PATH=$PATH:${PROTOBUF_HOME}/bin:${PROTOBUF_HOME}/lib/pkgconfig;
执行:source /etc/profile
查看安装结果:
(7) pkg-config安装
- cd /usr/local/supporters
- wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz
- sudo tar xvf pkg-config-0.29.2.tar.gz
- cd pkg-config-0.29.2
- ./configure --prefix=/usr/local/supporters/config/pkg-config --with-internal-glib
- make
- make install
查看安装结果:
(8) stf安装
- npm config set unsafe-perm=true
- npm install -g stf
(9) Stf Doctor检测STF
- cd /usr/local/node/node-linux-x64/lib/node_modules/stf/bin/
- ./stf doctor
上述图片检查,发现有个问题,解决方案:
sudo vim /etc/ld.so.conf
在文件里添加:/usr/local/lib
运行:ldconfig
再次检查环境:./stf doctor
(10) 启动rethinkdb
先启动rethinkdb,然后再使用stf local启动平台
- cd /usr/local/supporters/
- mkdir rethinkdb
- cd /usr/local/supporters/rethinkdb/
- rethinkdb --bind all --cache-size 8192 --http-port 8090 &
访问rethinkdb: http://服务器IP:8090
(11) 启动STF
cd /usr/local/node/node-linux-x64/lib/node_modules/stf/bin/
./stf local --public-ip 服务器IP --allow-remote --no-cleanup
启动成功后,访问stf: http://服务器IP:7100
输入账号密码就可以登录,密码是邮件格式,不做校验。
Docker搭建方式
(1)安装docker
(2)拉取adb镜像
拉取命令:docker pull sorccu/adb
启动命令:docker run -di -v /dev/bus/usb:/dev/bus/usb --name=adbd --privileged --net host sorccu/adb:latest
(3)拉取rethinkdb镜像
拉取命令:docker pull rethinkdb
启动命令:sudo docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
(4)拉取openstf/stf镜像
拉取命令:docker pull openstf/stf
启动命令:sudo docker run -d --name stf --net host openstf/stf stf local --public-ip 服务器IP --no-cleanup
--no-cleanup
run stf的时候需要注意ip的填写,虚拟机需要打开网络桥接模式
常见问题:
启动stf会自动安装stf到手机,但依然不能控制手机。是因为手机不会自动运行stf的服务器。执行以下命令即可(PS:执行以下命令,保证只有1台设备,且是需要手工拉起stf服务的设备)
adb -s 设备id shell am start -n jp.co.cyberagent.stf/.IdentityActivity
adb -s 设备id shell am startservice -n jp.co.cyberagent.stf/.Service
Mac搭建STF(兼容IOS设备)
IOS设备要依赖WebDriverAgent(简称wda)实现端对端UI测试,WebDriverAgent 在 iOS 端实现了一个 WebDriver Server ,借助这个 server 我们可以远程控制 iOS 设备, 能同时支持模拟器和真机, 真机运行需要证书和描述文件,个人免费证书也可以,注意配置WebDriverAgentRunnerRunner工程就行。
参考巨人的文章实行搭建:https://testerhome.com/topics/19548
(1) 安装brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
(2) 安装nodejs
brew install node -g
安装下node版本管理工具n
brew install n
这里node安装两个版本,一个最新版,一个是v8.14的版本,appium-doctor检测适用于最新版node,stf适用于8.14的版本
n指定版本:sudo n 8.14
n切换版本:sudo n
(3) 安装jdk
(4) 安装android sdk
(5) 安装stf依赖
- brew install rethinkdb graphicsmagick zeromq protobuf yasm pkg-config
(6) 安装libimobiledevice等依赖工具
- brew install usbmuxd
- brew link usbmuxd
- brew install libimobiledevice
- brew install ideviceinstaller
- brew install carthage
- brew install socat
(7)下载WebDriverAgent源码
git clone https://github.com/mrx1203/WebDriverAgent.git
(参考大神源码,在此源码基础上调整安装个人免费证书)
进入WebDriverAgent目录,执行进行编译安装
- cd /usr/local/lib/node_modules/WebDriverAgent/
- ./Scripts/bootstrap.sh
编译完毕,用Xcode打开WebDriverAgent.xcodeproj,电脑接入iOS设备(注意,这里调试的都是系统版本为13.2的)
由于苹果对证书要求非常严格,必须在证书设备列表中设备才能安装打包后的app.
- 可以使用公司苹果开发者账号,需要找开发同学加权限
- 可以使用个人免费开发者账号
这里安利个人免费安装证书:
Xcode-----》Preferences-----》Accounts添加apple Id
PROJECT--->WebDriverAgent--->info
TAEGETS--->WebDriverAgentLib--->General
TAEGETS--->WebDriverAgentLib--->Signing & Capabilities
TAEGETS--->WebDriverAgentLib--->Build Settings
TAEGETS--->WebDriverAgentRunner--->Signing&Capblities
TAEGETS--->WebDriverAgentRunner--->BuildSettings
执行安装证书
(1)Scheme 选择WebDriverAgentRunner
(2)执行test
test成功后,会发现手机设备自动安装上了一个WebDriverAgentRunner-Runner.app
在设置---》通用---》描述文件与设备管理 里面信任这个证书
此时在浏览器可以正常打开http://192.168.96.14:8100/status
以上方式就是安装个人免费证书的步骤了,当然也可以在终端通过命令执行安装
进入根目录,执行命令:
Xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=9251e39b63331e52538dc2cc122e72da3d652b41' test
设备ID:可以通过执行命令得到:idevices_id -l
(8) 下载Stf源码
git clone https://github.com/mrx1203/stf.git
(参考大神的源码,在此源码基础上优化)
执行npm install 自动安装所需的插件
启动rethinkdb:
• cd /usr/local/supporters/rethinkdb/
• rethinkdb --bind all --cache-size 8192 --http-port 8090 &
编译stf源码后,启动stf
- cd /usr/local/lib/node_modules/stf/bin/
- ./stf local --public-ip 服务IP --allow-remote --no-cleanup --wda-path /usr/local/lib/node_modules/WebDriverAgent/ --wda-port 8100
因为STF源码中包括有自动xcodebuild证书安装的部分,所以上面第三步必须测试成功后,再启动stf
其中会遇到很多问题,见招拆招吧。
如果启动stf遇到该问题ideviceinfo returned an error: Could not connect to lockdownd, error code -21
则尝试这种方案解决:
sudo chmod -R 777 /var/db/lockdown
brew update
brew uninstall --ignore-dependencies libimobiledevice
brew uninstall --ignore-dependencies usbmuxd
brew install --HEAD usbmuxd
brew unlink usbmuxd
brew link usbmuxd
brew install --HEAD libimobiledevice
brew install ideviceinstaller
flutter doctor (检测是否成功)
如果还是不行的话请重启电脑后再执行flutter doctor命令检测成功与否。