假設錄制了下面的腳本:
Browser("Mercury Tours").Page("Mercury Tours").Image("Login").Click 22,17
對于Login這個Image對象,QTP默認采用alt、html tag、image 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 Logi"了。因此QTP會忽略這個屬性類型,繼續應用下一個屬性類型。
2.2、QTP檢查每個候選對象的image type屬性,把image type不等于Image Button的對象過濾出去。
2.3、QTP檢查候選對象的html id屬性,發現所有對象的這個屬性的值都是空的。
2.4、QTP檢查候選對象的name屬性,發現有兩個對象(basic login和VIP login)的name屬性都等于"login",因此QTP把其它的對象過濾掉,剩下這兩個對象。
2.5、QTP再檢查剩下兩個對象的file name屬性,發現只有一個是等于"login.gif",因此QTP就此結束智能識別過程,推斷出這個對象是它要找的Login對象并且點擊它。
原文轉自:http://www.anti-gravitydesign.com