前端自动化测试之多浏览器兼容测试平台F2etest

作者: 风 哥 分类: Linux运维 发布时间: 2019-05-05 19:05

什么是 F2etest

今天介绍一款阿里巴巴出品的多浏览器测试整体解决方案, F2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案,优势是:

  1. 10 倍以上硬件利用率,降低企业运营成本;
  2. 提供非常棒的桌面用户体验,极大的提高测试效率;
  3. 浏览器云提供真实浏览器环境,还原真实测试场景;
  4. WebDriver 云快速稳定的支撑自动化测试脚本运行。

 

准备工作

 

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

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

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

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

f2etest源码下载方式:

 

安装虚拟机

 

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

其中

Centos IP:192.168.1.126

Windows IP:192.168.1.127

安装f2etest-guacamole

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

安装java环境:

[root@F2etest-web src]# tar xvf jdk-8u151-linux-x64.tar.gz
[root@F2etest-web src]# mv jdk1.8.0_151/ /usr/local/
[root@F2etest-web src]# vim /etc/profile.d/jdk.sh

设置环境变量,新增内容如下
JAVA_HOME=/usr/local/jdk1.8.0_151/
JAVA_BIN=/usr/local/jdk1.8.0_151/bin
JRE_HOME=/usr/local/jdk1.8.0_151/jre
PATH=$PATH:/usr/local/jdk1.8.0_151/bin:/usr/local/jdk1.8.0_151/jre/bin
CLASSPATH=/usr/local/jdk1.8.0_151/jre/lib:/usr/local/jdk1.8.0_151/lib:/usr/local/jdk1.8.0_151/jre/lib/charsets.jar
export  JAVA_HOME  JAVA_BIN JRE_HOME  PATH  CLASSPATH

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

[root@F2etest-web src]# java -version
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

安装tomcat7:

[root@F2etest-web src]# tar xvf apache-tomcat-7.0.82.tar.gz
[root@F2etest-web src]# mv apache-tomcat-7.0.82 /usr/local/tomcat7
[root@F2etest-web src]# vim /lib/systemd/system/tomcat.service
新增内容如下:

[Unit]
Description=tomcat7
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/tomcat7/bin/startup.sh
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/tomcat7/bin/shutdown.sh
PrivateTmp=true


[Install]
WantedBy=multi-user.target

 

systemctl enable tomcat

systemctl start tomcat

关闭防火墙

[root@F2etest-web src]# systemctl disable firewalld
[root@F2etest-web src]# systemctl stop firewalld

最后用上面两条命令禁用防火墙,并通过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 /usr/local/f2etest/guacamole-server
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

[root@F2etest-web guacamole-server-0.9.3]# netstat -lnpt|grep guacd
tcp 0 0 127.0.0.1:4822 0.0.0.0:* LISTEN 20006/guacd

安装guacamole-client


cp /usr/local/src/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
[root@F2etest-web src]# ln -s /etc/guacamole/guacamole.properties /root/.guacamole 
[root@F2etest-web src]# vi /etc/guacamole/noauth-config.xml

内容如下

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

[root@F2etest-web src]# systemctl restart tomcat

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

安装f2etest-web

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

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

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

安装mysql5.7

如果已安装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

[root@F2etest-web f2etest-web]# node -v
v8.16.0

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

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


cd //usr/local/src/f2etest/f2etest-web/
cnpm install
vi conf/site.json 

vi conf/server.json 

 

vi conf/app.json 

[root@F2etest-web f2etest]# cp -a f2etest-web/ /usr/local/f2etest/
[root@F2etest-web f2etest-web]# node app.js
f2etest-web listened on : 3000

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

部署webdriver server

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

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

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

安装远程桌面服务

 

 

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

禁用IE ESC

配置远程桌面服务

部署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=flyby

配置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.1.127其中ie8.bat中的appid请修改为ie8和前面的app.js中配置的id保持一致,

然后再把源码中的hostsShare-client下的build文件夹修改为hostsShare并拷贝到C盘根目录

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

这时,整个浏览器云就部署好了,。我们访问192.168.1.126:3000试试

已经可以成功打开了,并看到了我们配置的两个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地址或域名,这里的地址是F2etest-web node 启动的服务,如果有端口需要把端口也要加上。默认端口为3000

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查看

发表评论

电子邮件地址不会被公开。 必填项已用*标注