2011-09-29 79 views
1

我知道這可能是一個很基本的問題,但我一直在使用QTP最近開始,現在還在撿了幾件事情。在過去的幾個小時裏,我一直在尋找答案,但目前還沒有運氣。QTP中瀏覽器對象的完整結構是什麼?

我的問題:
在QTP的代碼,我們平時寫:

Browser("x").Page("y").Navigate("url") 

我想明白的地方這個瀏覽器對象是從哪裏來的,準確的X和Y是什麼。
1)它是VBScript中的一部分,或者是它QTP的一部分嗎?
2)另外,我在哪裏可以獲得有關此對象結構的完整詳細信息?我想知道除了「頁面」和「導航」之外,我還能寫些什麼。

回答

1

實際上,瀏覽器對象表示當前打開的所有瀏覽器窗口和選項卡的集合。您指定名稱或描述特定的一個是這樣的:

Browser("website") 

其中,「網站」可以是在對象存儲庫中一個名爲「瀏覽器對象」,或交替,描述(字符串或對象)描述特定的窗口/選項卡,您要使用。

Page對象表示上述瀏覽器可能已加載的所有可能頁面的集合。集合中的實例對應於對象庫中的命名「頁面對象」。您指定名稱或描述特定的一個是這樣的:

Browser("website").Page("Logon Page") 

這個概念可以非常混亂,尤其是在考慮到任何給定的實際的瀏覽器窗口/標籤只能有一個在任何時候裝載的實際頁面。換句話說,如果您遍歷瀏覽器(「網站」)的實時子對象,將始終只有一個。

想想這個瀏覽器/頁面關係的最好方法是使用正確的比喻。當我第一次開始使用QTP進行編程時,我認爲最好將瀏覽器對象視爲IE,Chrome,Firefox等,並試圖以這種方式管理我的對象存儲庫對象,並且造成了巨大的混亂。

我現在明白了,組織瀏覽器的最佳方式,在對象資源庫對象是這樣說的:

想在倉庫作爲一個單一的網站對象瀏覽器的對象。 Amazon.Com MSN.Com StackOverflow.Com LifeHacker.Com等等

將存儲庫中的頁面對象想象成網站對象的唯一明確的頁面。對於網站可能顯示的每個不同頁面(使用不同的控件),您應該在瀏覽器對象下創建一個單獨的頁面對象。您的倉庫可以是這個樣子:

Amazon.com 
    Login Page 
    Music Page 
    Books Page 
    Checkout Page 
StackOverFlow.Com 
    Login Page 
    username field 
    password field 
    Questions Page 
    Jobs Page 
    Tags Page 
    Users Page 
    Badges page 
etc etc... 

這裏的想法是創建邏輯頁包含只發生在這些網頁上的控制對象。

現在到了棘手的問題......

爲了使這項工作,我們必須確保瀏覽器和網頁對象實際上是「存在」的時候,他們應該。對於瀏覽器對象,只要在任何瀏覽器選項卡中加載了任何頁面,就應該「存在」。對於頁面對象,只有當該網站的該頁面被加載時才應該「存在」,並且它是特定的控件在屏幕上。

這意味着我們需要仔細編輯瀏覽器對象的標識屬性,以便無論當前加載哪個網站的頁面,它都會正確地將網站標識爲該瀏覽器對象。

下面是一個例子...在我的工作中,我有一個名爲「Trade」的網站。瀏覽器可以通過"name:=Trade" ...找到,但是登錄頁面有點不同 - 它的名字是「Welcome to Trade」...所以爲了使網站對象正常工作,我在標識屬性中使用了正則表達式這個:"name:=(?:Welcome to Trade|Trade)"。這樣,相同的瀏覽器對象說,當找到任何名字時它都「存在」。通過這種方式,我可以將登錄頁面包含爲整個網站對象的一部分,而不必使用僅包含登錄頁面的瀏覽器對象混淆對象存儲庫。這使得後面的代碼讀取變得更加惱人,並且使得WITH塊變得複雜)

另一個問題是Page對象通常很難區分。它們加載的URL可以是動態的,並且頁面標題可能不會從一個頁面改變到另一個頁面。爲了解決這個問題,我在對象庫中的頁面對象中添加了額外的標識屬性...例如,我可能會手動添加URL屬性,然後使用正則表達式來查看URL內的特定標籤,如下所示:"URL:=https://TradeTools-(?:SIT|UAT).*userLogin.*" This將除了強制性的title屬性(從來沒有刪除的強制性屬性,或者記錄引擎將無法正常錄製)

因此,爲了更直接地回答這個問題......

  1. 瀏覽器和網頁對象是QTP的一部分。 QTP向您提供這個API ,並且您(使用它/觸摸它/使用它/使用VBScript)。 瀏覽器和頁面類不在QTP之外。
  2. 您可以在QTP/UFT幫助文件中獲得可用於 瀏覽器和頁面對象的方法和屬性的完整列表。此外,您可以閱讀:http://community.hpe.com/t5/All-About-the-Apps/Understanding-the-web-test-object-model-in-HP-Unified-Functional/ba-p/6168133#.Vvp0V-IrK03

我希望這有助於。一旦我將瀏覽器/頁面的理解轉變爲我在這裏描述的隱喻,它大大提高了我使用QTP的能力。

+0

很好的答案!我將其標記爲我的問題的答案。儘管目前我的職業生涯中不再使用QTP(因爲這個問題已經在近5年前問過了)。儘管如此,感謝您分享見解和您對該主題的個人理解。 :) – Mugen

+0

謝謝。我必須寫下它,而你的問題是完美的,沒有答案,所以我選擇回答它,如果其他人搜索這個問題,他們可以找到我的答案。 –

2

在你的榜樣,「X」和「Y」指的是邏輯名稱在對象存儲庫。因此,要回答問題#1,這是QTP的一部分,而不是VBScript。對象存儲庫是一箇中介,用於在運行時識別對象的實際細節,從而映射VBScript代碼中的邏輯名稱。這只是一個抽象。

一般情況下,我建議得到在工具上一些正規的培訓。培訓將回答你關於這類事情的大部分問題。網上也有很多教程。最後,幫助指南將引導您瞭解很多基礎知識。

+0

感謝您的回覆。如果有人能夠指導我解釋關於「瀏覽器」和「頁面」的教程,那將會很棒。我花了很多時間尋找更多細節。 – Mugen

5

Browser測試對象表示標籤式瀏覽器中的單個選項卡。

當調用Browser函數返回QTP測試對象,通常這是從關聯的對象存儲庫名稱瀏覽器(如您的"x"例子),但它可能會使用descriptive programming創建一個新的測試對象。

當調用子元素的Browser你有兩個選擇(與所有測試對象)

  1. 呼叫測試對象的方法。 由測試對象支持的方法列表可以QTP的文檔中找到。
  2. A 孩子來自對象庫(或描述性編程)的測試對象。你的例子就是這種情況。 Browser的孩子幾乎總是Page,但可能會出現Window或其他對象(取決於您正在測試的應用程序)。

Page測試對象表示Browser中顯示的頂級HTML文檔。

BTW,代碼片段,你寫的是錯誤的。 Page不支持Navigate方法,Browser不支持。

相關問題