cover

在线视频观看

FAQ(持续更新中....)

  • Q1:激活RD授权管理器时候选择自动连接方式提示无法联系服务器

    A1:确保你机器能联网,然后多试几次,这个不是很稳定,不行重启网卡或服务器,至少我是这么解决的

  • Q2:如何确定f2etest-client安装成功?

    A2:请确保在Windows访问以下URL(xxx改为你的apikey),返回值是ok:http://127.0.0.1/setuser.asp?username=test&password=hello123&key=xxx

  • Q3:为什么运行openAllNode.bat打开所有节点后没有自动运行webdriver server?

    A3:请确保节点用户的自启动目录有opnodeX.bat,例如node1用户请确保C:\Users\node01\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup 目录下有opennode01.bat

  • Q4:本地代理如何使用?如何共享hosts?

    A4:在视频教程中有一段是演示把本地的hosts共享到浏览器云中,文字教程中暂未说明,需要的可以查看视频

  • Q5:如何添加其他浏览器?

    A5:和添加ie8类似:
    1.在server.json中配置浏览器所在机器信息(如果在已有机器添加可跳过这步)

    2.在app.json中添加对应浏览器信息(可参考源码中原始app.json配置)

    3.重启f2etest-web

    4.在浏览器所在机器app目录中添加对应bat文件(相应的bat文件可以在f2etest源码中app目录下特殊应用目录中找到),如果是2008还需要添加bat到RemoteApp程序

    5.在步奏1配置的机器中安装浏览器,切记要安装到C盘根目录,并且路径和bat脚本中保持一直

    6.如果需要部署webdriver则在opennode.bat中添加对应的浏览器信息,如果是非chrome和ie内核的浏览器,则还需要添加驱动文件到chromedriver.exe所在目录

    7.重启webdriver节点机器,如果按照教程配置了自动启动节点,就会自动启动节点并在webdriver云中注册上你刚才新增的浏览器

    chrome、360浏览器视频演示:

  • Q6:360浏览器打开无响应,或者打开几秒自动关闭?

    A6:360浏览器比较特殊,需要给安装目录赋予Authenticated Users权限,如果实在不行建议安装到2003机器,并赋予Users权限、或 Everyone权限

  • Q7:启动webdriver后在f2etest中没看到浏览器,提示Report to f2etest failed!

    A7:这个是webdriver连不上f2etest-web服务器,所有配置f2etestHosts、f2etestDomain的地方必须配置能访问的地址:ip:端口(你正常访问f2etest-web的地址,端口一般3000),我教程里面是80所以可以不写端口,一般情况下是ip:3000

前言

前面介绍过前端自动化测试之UI Recorder,其中webdriver server是单机的方式,如果是自己测试,或者单个浏览器测试没什么问题,如果是部门需要多浏览器多人测试的话,就无法满足需求了。

今天介绍一款阿里巴巴出品的多浏览器测试整体解决方案,详细介绍查看官方介绍F2etest

准备工作

其中WindowsServer2008用来部署webdriver server,可以是集群,这里只部署一台机器,集群部署方式和一台部署都是一样的方法,下面会说明

CentOS主要用来部署guacamole服务,用来通过f2etest-web网页端进行远程桌面登陆windows server进行管理和查看

上面两个操作系统是电驴链接和磁力链接,直接复制到迅雷即可下载

mysql、jdk等工具我放到百度网盘了需要的可以下载直接使用

f2etest源码下载方式:

安装虚拟机


这里我已经安装好了两台虚拟机,初始化好后就可以进行下一步了,这里网络建议使用桥接模式,免得出现各种各样的问题。

其中

Centos IP:192.168.10.105

Windows IP:192.168.10.106

安装f2etest-guacamole

把f2etest源代码中的f2etest-guacamole文件夹下的文件上传到centos中,以及jdk、tomcat一并上传,我这里是统一传到了root目录下,文件结构见下图

安装java环境:


mkdir /usr/java
cd /usr/java
cp /root/jdk-7u79-linux-x64.tar.gz ./
tar -zxvf jdk-7u79-linux-x64.tar.gz
vi /etc/profile

追加以下内容


JAVA_HOME=/usr/java/jdk1.7.0_79
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

source /etc/profile
最后输入java -version查看是否安装成功

安装tomcat7:


cd /usr/local/
cp /root/apache-tomcat-7.0.70.tar.gz ./
tar -xzvf apache-tomcat-7.0.70.tar.gz
mv apache-tomcat-7.0.70 tomcat7
cd /etc/init.d
vi tomcat7

追加以下内容


#!/bin/bash
# description: Tomcat Start Stop Restart
# processname: tomcat
# chkconfig: 234 20 80
JAVA_HOME=/usr/java/jdk1.7.0_79
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH
export PATH
CATALINA_HOME=/usr/local/tomcat7

case $1 in
start)
sh $CATALINA_HOME/bin/startup.sh
;; 
stop)   
sh $CATALINA_HOME/bin/shutdown.sh
;; 
restart)
sh $CATALINA_HOME/bin/shutdown.sh
sh $CATALINA_HOME/bin/startup.sh
;; 
esac    
exit 0


chmod 755 tomcat7
chkconfig --add tomcat7
chkconfig --level 234 tomcat7 on
chkconfig --list tomcat7
service tomcat7 start

service iptables stop #停止
chkconfig iptables off #禁用

最后用上面两条命令禁用防火墙,并通过8080端口访问tomcat是否成功

安装guacamole-server


cd /root
yum install cairo-devel libpng-devel uuid-devel freerdp* libvncserver-devel openssl-devel gcc

注:yum到gcc全部是一样命令,有些浏览器换行了,会引起误会--!

ln -s /usr/local/lib/freerdp/guacsnd.so /usr/lib64/freerdp/
ln -s /usr/local/lib/freerdp/guacdr.so /usr/lib64/freerdp/
mkdir -p /home/guacdshare
chmod 777 /home/guacdshare
tar -xzf guacamole-server-0.9.3.tar.gz
cd guacamole-server-0.9.3
./configure --with-init-dir=/etc/init.d
make
make install
ldconfig
chkconfig --add guacd
chkconfig guacd on
chkconfig --list guacd
service guacd start
netstat -panl | grep guacd

安装guacamole-client


cp /root/guacamole-0.9.3.war /usr/local/tomcat7/webapps/guacamole.war
mkdir /etc/guacamole
mkdir /root/.guacamole


vi /etc/guacamole/guacamole.properties


# Hostname and port of guacamole proxy
guacd-hostname: localhost
guacd-port:     4822
enable-websocket: true
enable-clipboard-integration: true

auth-provider: net.sourceforge.guacamole.net.auth.noauth.NoAuthenticationProvider
noauth-config: /etc/guacamole/noauth-config.xml

# auth-provider: net.sourceforge.guacamole.net.basic.BasicFileAuthenticationProvider
# basic-user-mapping: /etc/guacamole/user-mapping.xml


ln -s /etc/guacamole/guacamole.properties /root/.guacamole
vi /etc/guacamole/noauth-config.xml
内容如下


<configs>
    <config name="f2etest-ie8" protocol="rdp">
        <param name="hostname" value="192.168.10.106" />
        <param name="port" value="3389" />
        <param name="enable-drive" value="true" />
        <param name="drive-path" value="/home/guacdshare" />
    </config>
</configs>


service tomcat7 restart

然后通过上面命令重启tomcat,并访问刚才部署的war程序,看看是否部署成功:

安装f2etest-web

f2etest-web就是提供给我们操作浏览器云,查看webdriver云节点,以及远程登陆云节点的web界面

要运行f2etest-web首先要先安装nodejs和mysql数据库

把f2etest源码中的f2etest-web和mysql安装文件拷贝到centos /root中,文件结构如下

安装mysql

如果已安装mysql可忽略此步骤


cd /root
yum install numactl perl
rpm -qa | grep mysql
yum remove mysql-libs
rpm -ivh mysql-community-common-5.7.15-1.el6.x8664.rpm
rpm -ivh mysql-community-libs-5.7.15-1.el6.x8664.rpm
rpm -ivh mysql-community-client-5.7.15-1.el6.x8664.rpm
rpm -ivh mysql-community-server-5.7.15-1.el6.x8664.rpm

文件名是有下划线的,这里显示有问题,显示不出来

service mysqld start

然后以下命令查看mysql随机生成的登录密码 cat /var/log/mysqld.log | more
查找以下类似内容: [Note] A temporary password is generated for root@localhost:!R24*6IKha_p

其中localhost:后面的就是登录密码

最后用刚才的密码输入以下命令登录mysql修改密码和设置远程登陆权限


mysql -uroot -p
mysql> set global validate_password_policy=0;
mysql> set password='shaofan.org';
mysql> grant all privileges on *.* to 'root'@'%' identified by 'shaofan.org';


启动好mysql并修改好密码之后,就可以用你喜欢的mysql客户端管理工具初始化数据库了

首先创建f2etest数据库,然后导入f2etest-web文件夹中的f2etest.sql初始化表结构

安装nodejs

mysql部署完成之后就可以安装nodejs环境来启动f2etest-web程序了

curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum install -y nodejs
node -v


安装淘宝npm镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org

用过npm安装模块的小伙伴都知道,因为各种原因,经常下载慢,或者下载失败,所以借助淘宝的镜像加快安装,安装好之后用cnpm命令替代npm命令


cd /root/f2etest-web/
cnpm install
vi conf/site.json

vi conf/server.json

vi conf/app.json

node app.js

这时候f2etest-web就运行起来了,访问地址为http://192.168.10.105 但是这个时候先不要访问,因为提供初始化账号的IIS还没有部署。

部署webdriver server

由于windows server2008r2自带ie8,这里就默认这台服务器是提供ie8的webdriver服务。

取消登陆密码必须复杂性要求

在运行中输入gpedit.msc打开本地策略编辑器,修改如下

禁用IE ESC

安装远程桌面服务












安装完成之后需要重启服务器,重启之后登陆需要输入用户名和密码,输入administrator和密码登陆即可

配置远程桌面服务












部署IIS服务

iis服务器主要是用来给f2etest-web调用创建windows用户功能
拷贝f2etest源代码里的f2etest-client\f2etest-browsers\www下的setuser文件到C:\inetpub\wwwroot下 并修改apikey为前面配置的key



http://127.0.0.1/setuser.asp?username=test&password=hello123&key=shaofan.org

配置RemoteApp

复制f2etest-client\f2etest-browsers\curl中的所有文件到c:\windows下面

把f2etest-client\f2etest-browsers下的app目录复制到c盘根目录,并重命名强制代理.bat为ie8.bat,禁用代理.bat为hostsshare.bat,

然后修改两个bat中的f2etestDomain为f2etest-web的访问地址即192.168.10.105其中ie8.bat中的appid请修改为ie8和前面的app.js中配置的id保持一致,
然后再把源码中的hostsShare-client下的build文件夹修改为hostsShare并拷贝到C盘根目录

最后再添加两个bat文件到RemoteApp,并设置允许任何命令行参数


这时,整个浏览器云就部署好了,。我们访问192.168.10.105试试
已经可以成功打开了,并看到了我们配置的两个app,这时候你可以点击ie8图标就会再远程桌面打开ie8

部署WebDriver云

最后阶段了,接下来就是部署webdriver云

开启WebDriver功能

conf/site.json中的wdEnabled为true,此时重启f2etest-web,可以在上方菜单栏上看到:WebDriver云

ctrl+c停掉node app服务,然后修改wdEnabled为true重新启动服务


接下来在windows server安装nodejs和jdk,两个安装包一路下一步就行了,最后输入以下命令查看是否安装成功

接下来双击f2etest-client\f2etest-webdriver中的批量设置节点用户.vbs文件,输入初始化的节点数,我这里输入的2

然后把rdp目录下的多余node节点删除。只保留2个
然后把你修改好的f2etest-webdriver目录拷贝到c盘根目录,并将c:\f2etest-webdriver\webdriver目录加入PATH环境变量,具体为什么要添加,怎么验证前端自动化测试之UI Recorder这里有说明

节点初始化

执行f2etest-webdriver下的rdp程序 password处输入:hello1234

上面批量设置用户节点会在系统中初始化好你输入的节点用户数,密码为hello1234,所以这里和上面对应

点击Encrypt按钮 复制出加密后的Hash 替换当前子文件夹中所有rdp扩展名的文件(node01,node02),替换password_hash为刚才复制的加密后Hash

修改webdriver/opennode.bat,

修改f2etestHost变量为f2etest-web服务部署的IP地址或域名

browsers变量修改为本机所部署的浏览器名称,多个浏览器以逗号间隔,浏览器名称和浏览器版本号之间以空格间隔,例如: IE 11,Chrome,Firefox,这里修改为ie 8


执行rdp\openAllNode.bat,然后打开一次所有的IE浏览器,进行首次初始化,防止自动化时出现首次使用向导,导致自动化失败

然后执行rdp\initAllNodes.bat,批量添加启动批处理
所有节点初始化完成后,将rdp\openAllNode.bat添加快捷方式到Administrator账号的系统自动启动文件夹,以实现开机自动打开所有的WebDriver节点
命令行输入:netplwiz,在高级用户控制面板中,取消对“要使用本机,用户需输入用户名和密码(E)”项的勾选 系统将弹出窗口要求输入默认登录系统的用户名和密码,输入完成后点击确定
重启操作系统,如果正常的话,所有节点在3分钟左右之后应该会自动启动
最后在centos中添加WebDriver执行机的节点如下,name和hostname均为IP地址: vi /etc/guacamole/noauth-config.xml

重启tomcat即可 service tomcat7 restart

这时整个就部署完毕了,我们访问f2etest-web看看

webdriver云中已经有我们刚启动的两个节点了,接下来就可以利用前端自动化测试之UI Recorder来执行测试脚本,初始化时候的host和port填写f2etest上面提供的即可,并且加上f2etest.userid和f2etest.apiKey两个参数,具体f2etest-web有说明,自行访问f2etest-web查看

支付宝扫码打赏 微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章

杨少凡's Picture
杨少凡

全栈工程师,现居重庆,目前就职于人和集团电商部。

Chongqing「重庆」 http://shaofan.org