實際上,瀏覽器對象表示當前打開的所有瀏覽器窗口和選項卡的集合。您指定名稱或描述特定的一個是這樣的:
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屬性(從來沒有刪除的強制性屬性,或者記錄引擎將無法正常錄製)
因此,爲了更直接地回答這個問題......
- 瀏覽器和網頁對象是QTP的一部分。 QTP向您提供這個API ,並且您(使用它/觸摸它/使用它/使用VBScript)。 瀏覽器和頁面類不在QTP之外。
- 您可以在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的能力。
很好的答案!我將其標記爲我的問題的答案。儘管目前我的職業生涯中不再使用QTP(因爲這個問題已經在近5年前問過了)。儘管如此,感謝您分享見解和您對該主題的個人理解。 :) – Mugen
謝謝。我必須寫下它,而你的問題是完美的,沒有答案,所以我選擇回答它,如果其他人搜索這個問題,他們可以找到我的答案。 –