目录


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开源协议,用户可以对源码进行修改发布,

  1. 页面的HTML使用帕格模版引擎(.pug)
  2. 前端使用的是Angularjs
  3. 后端使用的是的NodeJS
  4. 数据库使用的是对象型数据库 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

配置环境变量:

  • vim /etc/profile

在文件中增加如下内容:

  • export NODE_HOME=/usr/local/node/node-linux-x64
  • export PATH=$PATH:${NODE_HOME}/bin;

安装完后,查看版本号,是否安装成功

dockerdesktop 和安卓模拟器_android

npm安装所在目录:cd /usr/local/node/node-v8.14.0-linux-x64/lib/node_modules/

之前安装了node10.x,可能是版本的问题,导致安装stf一直不成功,后面百度资料,降低node版本到8.14

安裝jdk

输入java -version,可以看到系统自带的OpenJDK版本信息。

dockerdesktop 和安卓模拟器_STF_02

rpm -qa | grep java

dockerdesktop 和安卓模拟器_linux_03

下面这几个可以删除, 例如:

dockerdesktop 和安卓模拟器_STF_04

  • 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

dockerdesktop 和安卓模拟器_STF_05

普通搭建方式

(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

dockerdesktop 和安卓模拟器_STF_06

可参考:https://rethinkdb.com/docs/start-a-server/

(2) 安装graphicsmagick

配置环境变量

  • export GRAPHICS_MAGICK_HOME=/usr/local/supporters/config/graphicsmagick
  • export PATH=$PATH:${GRAPHICS_MAGICK_HOME}/bin;

验证安装结果:

dockerdesktop 和安卓模拟器_linux_07

(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;

查看安装结果:

dockerdesktop 和安卓模拟器_linux_08

(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

查看安装结果:

dockerdesktop 和安卓模拟器_STF_09

(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

查看安装结果:

dockerdesktop 和安卓模拟器_linux_10

(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

查看安装结果:

dockerdesktop 和安卓模拟器_linux_11

(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

dockerdesktop 和安卓模拟器_docker_12

上述图片检查,发现有个问题,解决方案:

sudo vim /etc/ld.so.conf

在文件里添加:/usr/local/lib

运行:ldconfig

再次检查环境:./stf doctor

dockerdesktop 和安卓模拟器_linux_13

(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 &

dockerdesktop 和安卓模拟器_android_14

访问rethinkdb:  http://服务器IP:8090

dockerdesktop 和安卓模拟器_docker_15

(11) 启动STF

cd /usr/local/node/node-linux-x64/lib/node_modules/stf/bin/

./stf local --public-ip 服务器IP --allow-remote --no-cleanup

dockerdesktop 和安卓模拟器_linux_16

启动成功后,访问stf: http://服务器IP:7100

dockerdesktop 和安卓模拟器_STF_17

输入账号密码就可以登录,密码是邮件格式,不做校验。

 

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

dockerdesktop 和安卓模拟器_STF_18

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.

dockerdesktop 和安卓模拟器_linux_19

 

  1. 可以使用公司苹果开发者账号,需要找开发同学加权限
  2. 可以使用个人免费开发者账号

这里安利个人免费安装证书:

Xcode-----》Preferences-----》Accounts添加apple Id

dockerdesktop 和安卓模拟器_STF_20

PROJECT--->WebDriverAgent--->info

dockerdesktop 和安卓模拟器_docker_21

TAEGETS--->WebDriverAgentLib--->General

dockerdesktop 和安卓模拟器_android_22

TAEGETS--->WebDriverAgentLib--->Signing & Capabilities

dockerdesktop 和安卓模拟器_linux_23

TAEGETS--->WebDriverAgentLib--->Build Settings

dockerdesktop 和安卓模拟器_STF_24

TAEGETS--->WebDriverAgentRunner--->Signing&Capblities

dockerdesktop 和安卓模拟器_STF_25

TAEGETS--->WebDriverAgentRunner--->BuildSettings

dockerdesktop 和安卓模拟器_linux_26

执行安装证书

(1)Scheme 选择WebDriverAgentRunner

dockerdesktop 和安卓模拟器_android_27

(2)执行test

dockerdesktop 和安卓模拟器_docker_28

test成功后,会发现手机设备自动安装上了一个WebDriverAgentRunner-Runner.app

dockerdesktop 和安卓模拟器_linux_29

在设置---》通用---》描述文件与设备管理 里面信任这个证书

dockerdesktop 和安卓模拟器_docker_30

此时在浏览器可以正常打开http://192.168.96.14:8100/status

dockerdesktop 和安卓模拟器_linux_31

以上方式就是安装个人免费证书的步骤了,当然也可以在终端通过命令执行安装

进入根目录,执行命令:

Xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=9251e39b63331e52538dc2cc122e72da3d652b41' test

设备ID:可以通过执行命令得到:idevices_id -l

dockerdesktop 和安卓模拟器_docker_32

(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 &

dockerdesktop 和安卓模拟器_STF_33

编译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

其中会遇到很多问题,见招拆招吧。

dockerdesktop 和安卓模拟器_linux_34

 

如果启动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命令检测成功与否。