刚开始接触 STF 是看了testhome上思寒讲的关于Appium的一些教程,知道了远程管理设备这回事,本身也在使用Appium框架作App自动化测试,已经经过集成到了jenkins服务器上,因为服务器不在不在本身工位上,每次查看手机状态或者想看下运行状况,就要跑到服务器所在的位置查看,非常麻烦,因而本身想着也搭建一台STF服务器,远程管理设备。网上这方面的教程不少,也有关于各类坑的解决办法,整体安装下来没有想象的那么复杂,但也卡在了很多小问题上,特别是防火墙和权限的问题。建议刚接触STF 的同窗先从安装,可以正常使用起来开始,而后慢慢拓展,好比二次改造,制做Docker镜像。php
网上不少此类的安装文档,可参考如下几篇,非常详细
centos7下stf安装介绍(一)—-环境搭建
Centos 搭建STF
SDK环境配置1
SDK环境配置2html
安装完成后,远程不能访问
关闭 Centos 防火墙java
可远程访问STF,登陆可显示链接的设备。但点进去设备却不能显示界面,以下图:android
Centos 防火墙未关闭引发的,不止是7100,还有其余许多端口和外界访问。建议关闭centos防火墙。nginx
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090
再启动adb serviceweb
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
再启动stfdocker
docker run -d --name stf --net host openstf/stf stf local --public-ip 宿主机IP地址
必定要注意启动顺序,STF 依赖 rethinkdb,因此要先启动 rethinkdb,启动完成后使用: docker ps -a 查看是否启动成功
数据库
若是未成功启动,多是权限问题,加 –privileged=true 便可。
启动 rethinkdbubuntu
docker run -d --name rethinkdb --privileged=true -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 2048 --http-port 8090
启动STF windows
docker run -d provider --name stf --privileged=true --net host openstf/stf stf local --public-ip 192.168.116.128
首先保证其余电脑能够和安装STF 的系统通讯,在未安装STF 的电脑上暴露adb端口,建议采用默认端口:5037,
adb -a -P 5037 fork-server server
若是出现如下错误:
在任务管理器中关掉adb.exe,从新运行上述命令。
若是出现下面报错,建议换成低版本adb
reply fd for adb server to client communication not specified.
或者使用命令:adb nodaemon server -a
在docker中删除原来的stf镜像,从新运行(15.2.23.38 是宿主机IP,5037 是宿主机暴露的adb端口):
docker run -d --name stf --privileged=true --net host openstf/stf stf local --public-ip 15.2.23.203 --adb-host 15.2.23.38 --adb-port 5037 --allow-remote
更详细教程可参考:stf使用经验--在windows平台链接Mac上stf的过程
1 docker start 容器名 启动某个容器 2 docker stop 容器名 中止某个容器 3 docker rm 容器名 删除某个容器 4 sudo ufw status 查看ubuntu的防火墙状态 5 过程当中可能会没法ping虚拟机,改为桥接。同时关闭掉机器的防火墙(这个看本身,或者本身加规则,准许哪些IP访问)。 还不能够的话,配置一个跟主机相同IP段的IP地址 通常都能解决。。。