Smart identification is way by which QTP identifies an object when it is not found in the object repository during the run session. But it is not advisable to use this feature. Because QTP assumes and finds the object during run session, it is not a good idea to assume any think in software testing.
Let us see a simple example how QTP smart identification fails.
I want to verify a simple web page which comes, says after I perform some transactions in a website. The web page has a simple text message “Your transaction is successful” after a successful transaction and “Your transaction is not successful” after an unsuccessful transaction. Here you are automating a scenario to check a successful transaction page exists or not after a successful transaction.
The code to check that is
If browser (“Smart is not Smart”).Page (“Smart is not Smart”).WebElement(“Your transaction is successful”).Exist Then
reporter.ReportEvent micPass,”Pass”,”Result Pass”
reporter.ReportEvent micFail,”Fail”,”Result Fail”
This is the sample of that page
And the result is
But now consider that the transaction is not successful and you got a message “Your transaction is not successful”
Here is the sample page
But if you run the above code, the result will be still passing.
What cause this problem? Mr. Smart Identification
The only difference between those web element in successful and unsuccessful transaction is the text. So QTP assumes both the object is same and says pass. Yes, it gives a warning on using smart identification but it is visible only in the QTP result window. If you are using some other external means to document the result, this will never get noticed.
So it is always better to disable smart identification, the simplest way to do is go to File –>Setting–>Run tab and check “Disable Smart Identification during Run Session”
If you want to disable smart identification in you Quicktest Automation Object Model, the script is
Dim App ‘As Application
Set App = CreateObject(“QuickTest.Application”)
App.Test.Settings.Run.DisableSmartIdentification = True
Here is the result after disabling the smart identification.