QTP的智慧識別(Smart Identification)過程

TIB發表於2010-02-01

QTP在碰到物件識別問題的時候,會嘗試應用智慧識別(Smart Identification),如果智慧識別能定位出物件則繼續指令碼的執行,否則提示錯誤。

 

假設錄製了下面的指令碼:

Browser("Mercury Tours").Page("Mercury Tours").Image("Login").Click 22,17

對於Login這個Image物件,QTP預設採用althtml tagimage type屬性來識別物件。

然而,當你建立好上述指令碼後,開發人員又在同一個頁面新增了第二個Login物件(為VIP登入而設計的),同時修改了原來的Login物件的alt屬性,改成了“basic login”。

這樣當你針對新版本的頁面重新回放上述指令碼時,QTP就不能基於alt + html tag + image type的屬性組合來識別Login物件了,因為alt屬性已經改了。但是QTP仍然能夠成功地識別出Login物件來,因為這個時候它會去使用智慧識別(Smart Identifation)。

 

下面的過程描述了QTP應用智慧識別來確認Login物件的步驟:

1、根據WEB Image物件預設設定的智慧識別定義,QTP首先從頁面中找出所有html tag屬性=INPUT的物件(應用在Base Filter Properties中定義的屬性型別進行第一輪篩選和過濾)。

2、把篩選出來的物件作為候選物件,再依次應用Optioanl Filter Properties中定義的屬性型別進行過濾:

2.1 QTP會首先檢查候選物件的alt屬性,但是發現沒有等於“Login”的,因為已經被開發人員改為“basic Login”了。因此QTP會忽略這個屬性型別,繼續應用下一個屬性型別。

2.2QTP檢查每個候選物件的image type屬性,把image type不等於Image Button的物件過濾出去。

2.3QTP檢查候選物件的html id屬性,發現所有物件的這個屬性的值都是空的。

2.4QTP檢查候選物件的name屬性,發現有兩個物件(basic loginVIP login)的name屬性都等於“login,因此QTP把其它的物件過濾掉,剩下這兩個物件。

2.5QTP再檢查剩下兩個物件的file name屬性,發現只有一個是等於“login.gif,因此QTP就此結束智慧識別過程,推斷出這個物件是它要找的Login物件並且點選它。

 

相關文章