溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

TestComplete識別對象原理

發布時間:2020-10-15 21:41:05 來源:網絡 閱讀:1433 作者:孤月2012 欄目:軟件技術

測試對象的識別能力就成為一個GUI測試工具的最基本功能了。本文介紹TestComplete是如何識別進程、窗體和控件的。


命名概念:

  為了在腳本中記錄識別出來的測試對象,TC需要使用到這些對象的屬性。每個對象都有很多的屬性,像“class name”,“text”,“enabled”等。你可以在Object Browser窗口中看到有效的對象屬性,或者使用Object Properties窗口來查看。

  有些對象屬性會在應用程序的運行過程中發生改變(例如edit box對象的text屬性),而有些(例如窗體的handle)則是保持不變但是在兩個不同的應用程序實例運行時會不一樣。某些屬性(例如某些應用程序的窗體類名)不會由于應用程序運行實例不一樣而改變。

  為了使測試腳本能根據對象的屬性區分不同的對象,對象的屬性必須是唯一區別于其它類似的對象并且保持不變。

  一般來說,沒有哪些屬性能滿足所有這些要求,所以TC使用屬性的組合來識別對象。例如,默認使用進程的可執行文件名和進程的index來定位進程;為了定位窗體,則使用窗體的類名、caption、index。換而言之,典型的對象名包括幾部分:

TestComplete識別對象原理

  有些對象的名稱(例如,窗口的caption或進程的index)會隨著應用程序的運行而改變,因此你需要在腳本運行時使用不同的名稱來定位相同的進程或窗體。使用Name Mapping技術,你可以重新定義TC默認用來定位對象的屬性組合。

  對象的尋址定位是按一定的層次關系進行的。例如,你需要對一個窗體進行操作,首先要獲取相應的進程對象;為了對某個控件進行操作,首先要獲得包含該控件的窗體對象??墒褂肙bject Browser的對象樹來觀察對象的層次關系。

  識別和定位到對象后,TC就可以通過對象的名字屬性來進一步訪問它擁有的所有編程對象,通過這些對象接口來對它進行各種操作。

  1、進程

  TC通過process編程對象來與進程交互。使用Sys.Process或Sys.WaitProcess方法來獲取進程對象。這些方法使用能唯一識別操作系統進程的參數:

  1>、進程對應的可執行文件名

  2>、進程實例的Index。有可能相同名稱的應用程序會同時有多個進程實例運行,在這種情況下,進程index可以加以區分,第一個啟動的進程的index是1,第二個是2,如此類推。

  例如下面腳本獲取記事本的第二個進程實例:

  var  p : OleVariant;
  begin
   // Obtains the object that provides scrīpting interface
   // to the second instance of Notepad
   p := Sys.Process('Notepad', 2);
  end;


  但是要注意,進程的index可能會在腳本的運行過程中改變:如果低序號index的進程終止了,那么高序號index的進程的index會相應地減小,因此進程名就改變了。

  如果你在使用process時省略了index參數,則TC默認使用Index為1的進程,例如,Process(“Notepad”)和Process(“NotePad”,1)是指的相同進程對象。


  2、窗體對象

  TC用于識別窗體的原則依賴于被測應用程序是Open Application(開放應用程序,白盒的)還是non-Open Application(普通的,黑盒的)。

  1>、Open Applications

  如果被測應用程序編譯成Open Applications(開放的應用程序),則可以使用TC提供的特殊的方法來訪問對象:WinFormsObject,VBObject,VCLObject。SwingObject等。

  2>、Black-Box Applications

 TC默認使用以下幾個相對穩定的窗體屬性來定位黑盒類型的應用程序:

 l        Window class name

 l        Window caption

 l        Window index

  使用Process.Window,Process.WaitWindow,Window.Window和Window.WaitWindow方法來獲得窗體對象,例如:

  var p, w : OleVariant;
  begin
   p := Sys.Process('winword');
   w := p.Window('OpusApp', 'Microsoft Word - *', 1)
  end;

  3、控件

  因為操作系統的每個控件都是一個窗體,所以控件的識別方法與窗體的識別方法基本一致。


  4、Web對象

  當測試Web頁面時,TC使用DOM或Tag對象模型來定位頁面元素,DOM方式是通過Document對象模型來組織頁面對象的層次關系,而Tag方式是通過HTML的Tag標簽來組織層次關系。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女