<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # QTP / UFT 中的描述性編程:動態&靜態 > 原文: [https://www.guru99.com/uft-qtp-descriptive-programming.html](https://www.guru99.com/uft-qtp-descriptive-programming.html) ### 什么是描述性編程? 描述性編程用于在 AUT 中的對象上執行操作,該對象的定義未存儲在對象存儲庫中。 使用這種機制,您可以繞過對象庫中的標識,并在語句本身中提供對象描述。 **對象名稱僅用于映射腳本中的對象及其在對象庫中的描述。** 的含義是,如果您在腳本和對象存儲庫中更改對象名稱,則腳本應運行。 觀看以下有關此概念的視頻 視頻集錦 * 從對象存儲庫中刪除“代理名稱贏編輯框”的對象描述。 如果再次運行測試,由于無法識別對象,它將失敗。 讓我們檢查一下腳本失敗的原因 * 在運行時,Micro Focus UFT 會識別在 WinEdit 框中執行的操作,并且對象存儲庫中的對象描述將存儲為代理名稱。 它使用此名稱來跟蹤對象存儲庫中的對象。 對于父對象,不能有兩個具有相同名稱的子對象。 因此,QTP 唯一地映射存儲庫中的對象。 然后,它使用對象存儲庫中存儲的描述,并用描述替換名稱。 然后,它使用此語句來標識被測應用程序/ li 中的對象> * 由于在本例中,我們已完全刪除了該對象描述,因此腳本失敗/ li > * 但是,如果您不是測試人員而不是 QTP 替換對象描述,而是直接在腳本中指定對象描述,該怎么辦? **這只是“描述性編程”** ## 描述性編程的類型 您可以通過兩種方式使用描述性編程 1. 靜態的 2. 動態 ### 靜態描述性編程 在“靜態方法”中,為對象標識,您可以按以下格式指定對象的屬性 ``` property:=values, ``` 這種格式稱為屬性值對,并用逗號分隔> 如果您的對象使用**多個描述進行標識,則可以使用逗號** >進行指定 因此,在我們的案例中,“代理名稱”的描述變為 ``` "nativeclass:=Edit", "attached text:=Agent Name:" ``` ### 動態描述性編程 執行相同操作的第二種方法是使用動態描述性編程 **如果您的腳本多次使用描述性編程對象候選對象,則為每個語句指定所有屬性值對將非常麻煩** 在這種情況下,您可以使用 QTP 提供的**描述類** **用于創建描述對象的語法**為 ``` Set MyDescription = Description.Create(); MyDescription("property").Value = "property-value"; ``` 這是**動態方法** ## 為什么要使用描述性編程? 錄像筆錄 * 百萬美元的問題是為什么在由 QTP 處理對象標識過程時使用 DP * 假設您已分配測試工作門戶。 您在門戶中輸入搜索查詢,然后 * 您的測試要求您選擇所有可用的工作,然后單擊“應用”工作 * 但是所反映的作業數量將取決于搜索查詢和腳本執行時可用的作業,但是無法預先預測要反映的作業數量 * 在這種情況下,您可以使用描述性編程。 即使您不知道復選框的數量和名稱,您也知道對象的類為“ WebCheckBox” * 您可以使用 **ChildObject 方法**返回屬于特定父對象的對象 * 像這樣的一行代碼- ``` Set allObjects = Browser("Jobs").Page("QTP").ChildObjects() ``` * 將返回此頁面的所有子對象。 * 但是我們只需要 WebCheckBox 對象。 為此,我們可以創建一個過濾器創建對象并將其屬性設置為 web 復選框,然后將此過濾器作為 ChildObjects 方法的參數傳遞 * 在這種情況下,僅返回復選框。 * 接下來,您可以編寫這樣的代碼,該代碼訪問從零開始的整個復選框集合,并將所有復選框設置為 ON。 * 接下來,您可以單擊“應用”按鈕完成測試 * **您也可以使用描述性編程來運行難以記錄的對象,例如自動隱藏面板,層次結構更改的對象,嵌套的內部對象,子菜單。** * **您也可以使用描述性編程**進行高級字符串操作 * **結合索引屬性,描述性編程對于識別困難對象可能非常有用。** * **如果對對象層次結構中的對象使用程序化描述,則需要對后續的子對象使用描述編程。** * 例如對于頁面對象,使用了描述性編程,但是對于后續的子對象,則使用了 WinEdit Object Repository,這是不正確的 * 相反,這里對 Page 和 WinEdit 都使用描述性編程,這是正確的
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看