日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

?。?!Ruby應(yīng)用httpwatch進(jìn)行前端頁(yè)面自動(dòng)化

 看見(jiàn)就非常 2015-09-18

Ruby應(yīng)用httpwatch進(jìn)行前端頁(yè)面自動(dòng)化

HttpWatch概述

HttpWatch是IE和Firefox瀏覽器上的一款插件工具,用來(lái)捕獲瀏覽過(guò)程中所產(chǎn)生的數(shù)據(jù)信息,并記錄其相關(guān)日志文件。雖然HttpWatch 能通過(guò)手動(dòng)來(lái)控制運(yùn)行,但很多時(shí)候?yàn)榱颂岣咝?,?duì)于一些重復(fù)執(zhí)行的任務(wù),比如性能測(cè)試需要自動(dòng)化來(lái)完成,這樣就可以使用HttpWatch來(lái)配合自動(dòng)化 測(cè)試性能來(lái)自動(dòng)獲取其相關(guān)數(shù)據(jù)信息,從而使得HttpWatch也能自動(dòng)化進(jìn)行操作。因此為了更好的配合自動(dòng)化測(cè)試,HttpWatch插件專(zhuān)門(mén)提供自動(dòng) 化接口類(lèi)程序,以便外部程序來(lái)自動(dòng)化獲取其已經(jīng)存在的數(shù)據(jù)信息。HttpWatch中提供了大約三十種以上的自動(dòng)化接口,但只有四個(gè)主要的類(lèi)用于控制 HttpWatch插件。

下圖就是描述了這個(gè)四個(gè)類(lèi)與瀏覽器之間的關(guān)系:

四個(gè)主要的自動(dòng)化接口類(lèi)分別如下描述:

控制類(lèi)(Controller Class)

HttpWatch的控制出發(fā)點(diǎn)就是控制類(lèi),一個(gè)自動(dòng)化客戶(hù)端使用它來(lái)創(chuàng)建一個(gè)HttpWatch插件實(shí)例,或者是打開(kāi)一個(gè)已經(jīng)存在的實(shí)例文件。

 

插件類(lèi)(Plugin Class)

HttpWatch分別為IE和Firefox提供了插件類(lèi),它主要是針對(duì)Http協(xié)議交互提供啟動(dòng)和停止方法去控制 HttpWatch的錄制功能,另外還提供了一些方法和屬性去管理和配置自動(dòng)化錄制方式。其中插件類(lèi)中的“GotoURL”方法可以用于重定向?yàn)g覽任何指 定的URL地址。另外一些屬性則是為了說(shuō)明客戶(hù)端中哪些網(wǎng)頁(yè)是否已經(jīng)加載完成,哪些請(qǐng)求是否是當(dāng)前的錄制請(qǐng)求。日志中的屬性信息可以說(shuō)明錄制請(qǐng)求是否已經(jīng) 達(dá)到錄制的標(biāo)準(zhǔn)。

 

日志類(lèi)(Log Class)

通過(guò)插件去訪問(wèn)日志對(duì)象,獲取日志信息,這些日志信息就是HttpWatch錄制過(guò)程記錄的請(qǐng)求和響應(yīng)信息。日志類(lèi)提供了許多 屬性和方法,并且允許對(duì)這些錄制的數(shù)據(jù)信息進(jìn)行檢索和保存,或者以多種格式導(dǎo)出等等。另外,可以通過(guò)這個(gè)控制類(lèi)的一個(gè)“OpenLog”方法打開(kāi)一個(gè)日志 文件,并且返回這個(gè)日志文件的相應(yīng)的說(shuō)明信息,這個(gè)說(shuō)明信息包括的就是錄制過(guò)中的請(qǐng)求和響應(yīng)文件信息。

 

屬性類(lèi)(Entry Class)

每個(gè)日志文件都包含一個(gè)屬性列表,且這個(gè)屬性列表中包括詳細(xì)的HTTP交互信息。這些內(nèi)容具體包括請(qǐng)求的資源信息和一些返回的信息。這個(gè)請(qǐng)求和響應(yīng)屬性信息提供了訪問(wèn)頭文件和Cookies文件,這些信息都是在與服務(wù)器發(fā)生交互過(guò)程中產(chǎn)生的。

Ruby自動(dòng)化控制HttpWatch

首先,在httpwatch中調(diào)用Ruby,必須要安裝ruby工具包

其次通過(guò)Ruby去訪問(wèn)httpwatch需要調(diào)用ruby的相關(guān)庫(kù)文件,httpwatch自動(dòng)化庫(kù)中已經(jīng)包含了一個(gè)com組建,為了使用ruby去訪問(wèn)它就需要引入“win32ole”庫(kù)文件,通常在代碼中添加以下聲明即可:

Require ‘win32ole’

第三,關(guān)于與httpwatch插件的交互

需要先創(chuàng)建一個(gè)控制類(lèi),通過(guò)控制類(lèi)來(lái)創(chuàng)建它的實(shí)例。通過(guò)httpwatch接口直接創(chuàng)建控制類(lèi)如下:

controller = WIN32OLE.new('HttpWatch.Controller')

接下來(lái)就是需要去創(chuàng)建一個(gè)瀏覽器的實(shí)例對(duì)象,這個(gè)瀏覽器的實(shí)例對(duì)象包括IE和Firefox兩種,且分別對(duì)這兩種類(lèi)型瀏覽器都 給予支持。而這兩種對(duì)象都有兩個(gè)方法為:New和Attach。這個(gè)New方法是用來(lái)創(chuàng)建一個(gè)新的實(shí)例,這個(gè)新的實(shí)例類(lèi)型必須與這個(gè)瀏覽器對(duì)象中插件類(lèi)型 想一致。而Attach方法則表示可以創(chuàng)建一個(gè)新的實(shí)例并且可以嵌入已經(jīng)創(chuàng)建過(guò)的另外一些組件。兩種方法均返回的是httpwatch插件對(duì)象。

下面這段代碼表示創(chuàng)建一個(gè)新的IE實(shí)例,并嵌入了httpwatch插件組件:

controller = WIN32OLE.new('HttpWatch.Controller')

plugin = controller.IE.New()

關(guān)于Firefox的新實(shí)例和組件如下:

controller = WIN32OLE.new('HttpWatch.Controller')

plugin = controller.Firefox.New()

關(guān)于Attach方法在IE和Firefox瀏覽器實(shí)例中使用是不同的,IE實(shí)例需要依賴(lài)IE IWebBrowser2接口,如下所示代碼段:

ieBrowser = WIN32OLE.new('InternetExplorer.Application')

ieBrowser.Visible = true    # Required to see the new window

control = WIN32OLE.new('HttpWatch.Controller')

plugin = controller.IE.Attach(ieBrowser)

相比IE,F(xiàn)irefox需要配置文件名才能運(yùn)行實(shí)例,如下:

controller = WIN32OLE.new('HttpWatch.Controller')

plugin = controller.Firefox.Attach('FirefoxProfileName')

所有的返回對(duì)象都是插件對(duì)象類(lèi)型,且能被控制類(lèi)所調(diào)用。

錄制

首先你的瀏覽器實(shí)例中必須嵌入HttpWatch插件,這個(gè)時(shí)候你的應(yīng)用程序?qū)刂祁?lèi)和插件對(duì) 象。一般情況下,我們?cè)谑褂胔ttpwatch進(jìn)行錄制之前需要配置很多功能,此時(shí)說(shuō)到是過(guò)濾器,過(guò)濾器一般用于精確查找我們想要的信息,從而去掉那些不 需要的信息。然后一般在沒(méi)有特定需求和目標(biāo)的時(shí)候,將默認(rèn)關(guān)閉過(guò)濾器設(shè)置。代碼段如下:

plugin.Log.EnableFilter(false)

在錄制之前需要清空httpwatch的日志信息和瀏覽器的緩存信息。代碼段如下:

plugin.Clear()

接下來(lái)我們可以開(kāi)始錄制了,代碼段如下:

plugin.Record()

當(dāng)頁(yè)面發(fā)生加載產(chǎn)生http協(xié)議流量信息時(shí),此時(shí)錄制機(jī)制才會(huì)記錄這些過(guò)程。關(guān)于如何驅(qū)動(dòng)瀏覽器進(jìn)行頁(yè)面加載,有如下三種方法:

1、通過(guò)瀏覽器自身的接口來(lái)驅(qū)動(dòng),如IE中的IWebBrowser2

2、通過(guò)設(shè)計(jì)框架來(lái)驅(qū)動(dòng),如Watir、WatiN等

3、調(diào)用插件對(duì)象自身的方法”GotoURL”

通常我們使用第三中方法,因?yàn)樗遣寮膬?nèi)置方法,可以方便測(cè)試網(wǎng)頁(yè)加載的正確性和度量頁(yè)面的性能。而且該方法可以很好的控制由于頁(yè)面加載而導(dǎo)致的連接超時(shí)等問(wèn)題,如下代碼段:

myUrl = 'http://www.'

plugin.GotoUrl( myUrl )

control.Wait( plugin, -1 ) # don't return until the page loads

錄制完頁(yè)面請(qǐng)求過(guò)程之后就需要停止錄制,就需要調(diào)用插件對(duì)象的stop方法了,并且還要關(guān)閉瀏覽器,調(diào)用插件對(duì)象的CloseBrowser方法。

 Watir驅(qū)動(dòng)瀏覽器

關(guān)于Watir的下載和安裝請(qǐng)?jiān)敿?xì)見(jiàn)《自動(dòng)化測(cè)試框架設(shè)計(jì)理解文檔V3.0》。

通過(guò)watir來(lái)調(diào)用httpwatch插件需要引入watir庫(kù)文件,代碼段如下:

require 'win32ole'

require 'watir'

# Open the IE browser using Watir

ie = Watir::IE.new

# Attach HttpWatch

control = WIN32OLE.new('HttpWatch.Controller')

plugin = control.Attach(ie.ie)

# Start recording

plugin.Record()

保存日志文件

當(dāng)錄制運(yùn)行完之后,需要保存當(dāng)前的運(yùn)行日志,代碼段如下:

plugin.Log.Save('c:\\mylogfiles\\mylogfile.hwl')

 

 打開(kāi)日志文件

當(dāng)需要訪問(wèn)日志的時(shí)候,就需要調(diào)用插件對(duì)象中的方法OpenLog,代碼段如下:

# You always need to create an instance of Controller to use the HttpWatch Automation

controller = WIN32OLE.new('HttpWatch.Controller')

# Open the log file and keep a reference to the returned Log object

log = controller.OpenLog("c:\\temp\\test.hwl")

# Access the data in the log file using properties of the log object

printf "The log file contains %d entries", log.Entries.Count

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多