前言:項目須要作瀏覽器的兼容性測試,不管是經過安裝大量的瀏覽器,或者使用IE Tester等模擬軟件,都會有各自的缺陷。如:低效率、總體資源消耗高。剛好在一個測試交流羣中,看到有人提出該問題,獲得利用F2etest這個答案。遂開始瞭解F2etest,並進行F2etest的環境搭建。當你看完文章後,你應該瞭解什麼是F2etest?如何進行F2etest-web部署?如何進行瀏覽器雲部署?如何進行多瀏覽器部署?html
F2etest 是一個面向前端、測試、產品等崗位的多瀏覽器兼容性測試總體解決方案,優點是:前端
搭建F2etest環境,須要準備CentOS 7虛擬機或物理機。本文以虛擬機搭建方式爲例,進行描述。git
操做系統 | IP | 內存 | 軟件 |
---|---|---|---|
本機:Windows 10 專業版 | 192.168.X.1 | 16G | VMware® Workstation 15 Pro 15.0.2 |
虛擬機:CentOS Linux release 7.4.1708 (Core) | 192.168.X.2 | 4G | Docker 19.03.1,MySQL Ver 14.14 Distrib 5.6.43 |
虛擬機:Windows Server 2008 R2 Standard | 192.168.X.3 | 2G | ie8,Chrome 76.0.8809.100,Firefox 68.0.2,360瀏覽器 10.0.1977.0,360極速瀏覽器 11.0.2179.0 |
虛擬機:Windows Server 2008 R2 Standard | 192.168.X.4 | 2G | ie9,QQ瀏覽器 10.4.2,搜狗高速瀏覽器 8.5.10.31270 |
虛擬機:Windows Server 2008 R2 Standard | 192.168.X.5 | 2G | ie10 |
請先再本機上安裝VMware軟件,下載CentOS鏡像,啓動CentOS虛擬機,在CentOS機器上安裝最新版的Docker,如已安裝請忽略,安裝教程:www.yuque.com/grasilife/d…github
# 獲取 `f2etest-web` 鏡像
[root@localhost ~]# docker pull registry.cn-hangzhou.aliyuncs.com/f2etest/f2etest-web
# 啓動容器
# 映射本地端口,這裏已 80 爲例,請確保此端口未被佔用
# 若是 80 被佔用,請修改成其它可用端口,例如 8080 端口:-p 8080:80
[root@localhost ~]# docker run -dit --privileged -p 80:80 --name f2etest registry.cn-hangzhou.aliyuncs.com/f2etest/f2etest-web
# 進入容器
[root@localhost ~]# docker exec -it f2etest bash
# 初始化數據庫表並啓動 Web
[root@e40349b09133 f2etest-web]# source setup.sh
複製代碼
# 修改site.json
[root@e40349b09133 f2etest-web]# vi /home/f2etest-web/conf/site.json
# 第11行 修改 guacamoleApi 字段,IP 地址改成 CentOS 機器 IP 地址,端口號改成運行容器時映射的本地端口號,80 端口可忽略。建議使用 80 端口。
"guacamoleApi": "http://192.168.X.2:80/guacamole/client.xhtml"
# 修改server.json
[root@e40349b09133 f2etest-web]# vi /home/f2etest-web/conf/server.json
# 第4行 修改ip地址爲Windows Server 的 IP 地址
"ip": "192.168.X.3",
# 重啓 web
[root@e40349b09133 f2etest-web]# pm2 restart f2etest-web
# 修改noauth-config.xml
[root@e40349b09133 f2etest-web]# vi /etc/guacamole/noauth-config.xml
# 第3行 value的值爲Windows Server 的 IP 地址
<param name="hostname" value="192.168.X.3" />
# 重啓 tomcat8
service tomcat8 restart
複製代碼
在 Windows Server上搭建 IE8 瀏覽器與 hostShare 應用供 F2etest-web 使用。web
請先再本機上安裝VMware軟件,下載Windows Server 2008 R2 Standard鏡像,啓動Windows Server 2008 R2 Standard虛擬機.chrome
運行中輸入 gpedit.msc
打開本地策略編輯器docker
修改 帳戶策略 - 密碼策略shell
進入服務器管理器數據庫
配置 IE ESCjson
服務器管理 - 角色 - 添加角色
角色服務,勾選遠程桌面會話主機,遠程桌面受權和遠程桌面 Web 訪問。
應用程序兼容性,下一步。
身份驗證方法,選擇不須要使用網絡級別身份驗證,下一步。
受權模式,選擇每用戶,下一步。
用戶組,按照以下面所示,添加 Authenticated User,下一步。
客戶端體驗,默認,下一步。
RD 受權配置,默認,下一步。
角色服務,按照下圖勾選,勾選應用程序開發和管理工具,下一步。
確認安裝,安裝完成後重啓機器。
激活遠程桌面服務,管理工具 - 遠程桌面服務 - 遠程桌面受權管理器。
右鍵,激活服務器。
激活嚮導,下一步。
公司,姓,名,可填任意值。
不填,下一步。
確保「當即啓動許可證安裝嚮導」勾選,下一步。
下一步。
示例,無論,下一步。
協議號碼填入「6565792」,下一步。
選擇每用戶,下一步。
完成。
注:官方文檔裏的120天受權激活破解未進行。
先將f2etest-master.zip 下載完成,並傳到Windows虛擬機中,下載地址
IIS 服務器主要是用來給 F2etest-web 調用建立 Windows 用戶功能。
拷貝 F2etest 源代碼裏的 f2etest-client\f2etest-browsers\www
下的 setuser 文件到C:\inetpub\wwwroot
下 並修改 apikey
爲前面配置的 key
。
編輯 setuser 文件,修改 apiKey
。
進入 IIS 管理器。
選擇身份驗證。
右鍵匿名身份驗證,編輯。
選擇設置。
填入 administrator 的帳戶與密碼。
訪問 http://127.0.0.1/setuser.asp?username=test&password=hello123&key=f2etest,若是看到頁面輸出 ok,表明 IIS服務設置成功。
複製f2etest-client\f2etest-browsers\curl
中的全部文件到 c:\windows
下面。
把 f2etest-client\f2etest-browsers
下的 app 目錄複製到 C 盤根目錄,並重命名強制代理.bat 爲 ie8.bat,禁用代理.bat爲 hostsshare.bat。
而後修改兩個 bat 中的 f2etestDomain 爲 f2etest-web 的訪問地址,其中 ie8.bat 中的 appid 請修改成 ie8 和f2etest-web 的 app.js 中配置的 id 保持一致。
把源碼中的 hostsShare-client 下的 build 文件夾修改成 hostsShare 並拷貝到 C 盤根目錄。
管理工具 - 遠程桌面服務 - RemoteApp 管理器
按照下圖順序添加
點擊 ie8.bat,選擇屬性,選擇容許任何命令行參數。
若你須要測試不一樣版本的IE 瀏覽器,那麼須要進行部署一樣數量的Windows服務器(由於在一臺 Windows 服務器上只能安裝一個 IE系瀏覽器)。若測試其它瀏覽器,則只需修改 app.json 文件和進行配置 RemoteApp 應用程序。
每新增一臺 Windows 服務器,除了完成 Windows 上的瀏覽器雲配置外,還須要在 f2etest-web 上完成其對應的配置,這樣才能實現點擊站點上的圖標來打開對應服務器上的瀏覽器。例如:咱們已配置了一臺 IE8 的服務器,如今新增一臺 IE9 的服務器。
遠程鏈接到目標 Windows 服務器,按照如何進行瀏覽器雲部署,完成基本環境的配置。能夠不用部署 hostsShare 應用程序。
# 容器內,修改server.json
[root@e40349b09133 f2etest-web]# vi /home/f2etest-web/conf/server.json
# 修改ip地址爲Windows Server 的 IP 地址
[
{
"id": "f2etest-ie8",
"ip": "192.168.X.3",
"remoteApp": true
},
{
"id": "f2etest-ie9",
"ip": "192.168.X.4",
"remoteApp": true
},
{
"id": "f2etest-ie10",
"ip": "192.168.X.5",
"remoteApp": true
}
]
# 修改app.json
[root@e40349b09133 f2etest-web]# vi /home/f2etest-web/conf/app.json
[
{
"id": "hostsshare",
"name": "hosts",
"server": "f2etest-ie8",
"program": "c:\\app\\hostsshare.bat"
},
{
"id": "ie8",
"name": "IE 8",
"server": "f2etest-ie8",
"program": "c:\\app\\ie8.bat"
},
{
"id": "ie9",
"name": "IE 9",
"shortname": "UC",
"server": "f2etest-ie9",
"program": "c:\\app\\ie9.bat"
},
{
"id": "ie10",
"name": "IE 10",
"server": "f2etest-ie10",
"program": "c:\\app\\ie10.bat"
},
{
"id": "chrome",
"name": "Chrome",
"server": "f2etest-ie8",
"program": "c:\\app\\chrome.bat"
},
{
"id": "firefox",
"name": "Firefox",
"server": "f2etest-ie8",
"program": "c:\\app\\firefox.bat"
},
{
"id": "360se",
"name": "360瀏覽器",
"shortname": "360",
"server": "f2etest-ie8",
"program": "c:\\app\\360se.bat"
},
{
"id": "qqbrowser",
"name": "QQ瀏覽器",
"shortname": "QQ",
"server": "f2etest-ie9",
"program": "c:\\app\\qqbrowser.bat"
},
{
"id": "sogou",
"name": "搜狗瀏覽器",
"shortname": "搜狗",
"server": "f2etest-ie9",
"program": "c:\\app\\sogou.bat"
},
{
"id": "360chrome",
"name": "360極速瀏覽器",
"shortname": "360極速",
"server": "f2etest-ie8",
"program": "c:\\app\\360chrome.bat"
}
]
# 修改noauth-config.xml
[root@e40349b09133 f2etest-web]# vi /etc/guacamole/noauth-config.xml
# value的值均修改成Windows Server 的 IP 地址
<configs>
<config name="f2etest-ie8" protocol="rdp">
<param name="hostname" value="192.168.X.3" />
<param name="port" value="3389" />
<param name="enable-drive" value="true" />
<param name="drive-path" value="/home/guacdshare" />
</config>
<config name="f2etest-ie9" protocol="rdp">
<param name="hostname" value="192.168.X.4" />
<param name="port" value="3389" />
<param name="enable-drive" value="true" />
<param name="drive-path" value="/home/guacdshare" />
</config>
<config name="f2etest-ie10" protocol="rdp">
<param name="hostname" value="192.168.X.5" />
<param name="port" value="3389" />
<param name="enable-drive" value="true" />
<param name="drive-path" value="/home/guacdshare" />
</config>
</configs>
# 重啓 web
[root@e40349b09133 f2etest-web]# pm2 restart f2etest-web
# 重啓 tomcat8
service tomcat8 restart
複製代碼
注意:f2etestDomain 爲 f2etest-web 站點的訪問地址。
調用 f2etest-web 的同步全部用戶接口,本機瀏覽器訪問 http://{f2etestDomain}/syncAllRemoteUsers
其餘瀏覽器主要包括:Chrome 瀏覽器,Firefox 瀏覽器,Opera 瀏覽器,QQ 瀏覽器,UC 瀏覽器,遨遊瀏覽器,搜狗瀏覽器,2345 瀏覽器,獵豹瀏覽器,360 安全瀏覽器,360 極速瀏覽器。
因爲這些瀏覽器的安裝步驟基本一致,故下文進行統一介紹其安裝部署流程。
下載對應的安裝包,進行安裝,安裝時選擇自定義安裝,不要將程序安裝到 Administrator 帳戶的路徑下,能夠安裝到 Program Files 或者 C 盤根目錄,有資源的狀況下能夠安裝到其餘盤符(如:D 盤)。
配置 RemoteApp 應用程序。部分批處理程序能夠在 GitHub 源碼 f2etest/f2etest-client/f2etest-browsers/app/特殊應用
中拷貝。
目前已知特殊瀏覽器處理方式:
mshta vbscript:msgbox("360安全瀏覽器,離開請點擊肯定。",0,"舒適提示")(window.close)
複製代碼
雖然搭建過程當中遇到許多問題,可是在雙龍的幫助下最終搭建成功。實現了多瀏覽器兼容測試的目的,十分感謝他。此外如下官方文檔也寫的很好,爲做者點贊。
[1] F2etest-web 部署
[2] 瀏覽器雲部署
[3] 多瀏覽器部署