The reason that you’re getting this error generally cannot be determined without specific information. However, the answer is typically that even though the element might appear to be on the screen, at the pixel level it is different than it was when it was captured.
Although a failure to find an image is because of a change in the way it is displayed on the system under test (SUT), a contributing factor is often the way the image was captured. For example, It’s typically not a good idea to include more than one interface element in a single image because they might not be rendered in the same position relative to each other every time they’re displayed. A label and a text field could be rendered with two pixels between them when they’re captured, but with three pixels between them on a subsequent run.
For information about capturing images, see Image Capture Best Practices.
Changing SUTs can result in additional problems. For example, underlying settings such as text smoothing can change the way characters appear throughout the interface. Searching for the image using Image Scaling can solve this problem.
Timing could be another reason that your script can't find an image. An image may not appear on the SUT screen in time for the script to find it, but it may display by the time the Image Update Panel pops up. For information about timing in your searches, see Avoiding Timing Problems.
If you’re not able to determine what the difference is between your captured image and the one displayed on the SUT, email both in full resolution to the Eggplant support address, and we’ll be able to tell you how they are different and suggest the best fix for the problem.