I have a test with a ComboBox "ClickItem" operation to select a ComboBox item, with this description: "Selects the 4 item of the 'ComboBox' combo box". The 4th item is always selected correctly, but the operation fails anyway. After selecting the correct ComboBox item, TC says "Waiting for the ComboBox object" and times out. It then says, "The control does not exist", and it logs an error. It can select the correct ComboBox item by integer index or by name, but with the same resulting error.
The Test Visualizer image for this operation shows a blank combo box item instead of the actual item to be selected. Is this why it fails? If so, how can I tell TC not to care if the Visualizer image doesn't match? Or basically, how can I stop TC from failing this operation, since it succeeds in selecting the correct ComboBox item?
Solved! Go to Solution.
I solved this issue by using a script function (as suggested by Alex at Smartbear) to call the ComboBox's native method (SelectItemWithValue) instead of the TC method ClickItem that's added when recording the test. I had trouble finding the ComboBox with ObjectSpy to use as the object path in the script, but I found it using Point and Fix as suggested by Martha (I marked it as the solution, since it was the closest). That was necessary because the ComboBox only exists while the dropdown is open, and it closes when you click elsewhere, e.g. for the ObjectSpy drag.
Alex explained that the TC ClickItem method, which I had used for the ComboBox item selection, first executes the click, then verifies that it went ok. But the ComboBox disappears in the object tree as soon as the selection is made, so it hangs while trying to verify.
Have you tried turning off the visualizer to make sure that that is, indeed, the problem?
I turned off visualizer data collection during recording and test runs, re-recorded the ComboBox test step, and it still fails the same way. Now at least I understand the visualizer data collection doesn't affect test runs.
> After selecting the correct ComboBox item, TC says "Waiting for the ComboBox object" and times out.
Can you provide the relevant part of code and specify what exactly line of code causes error record in the log? (Either double-click log error in the log or use Stack Trace log pane).
The idea is that the combo-box is recreated after selected item changes and this invalidates the reference to the previous instance test code tries to use.
I attached a snapshot of the KeyWord test steps up to the ClickItem operation. It shows the object path of the ComboBox. After the test runs and the operation fails, if I click "Highlight" with the application still running, it says it can't display the object.
The 4th item is always selected correctly, but the operation fails anyway. After selecting the correct ComboBox item, TC says "Waiting for the ComboBox object" and times out. It then says, "The control does not exist", and it logs an error.
How do you know that the 4th item is selected correctly?
When TC executes the ComboBox operation, I can see in the application UI that the 4th menu item "Ethanol" has been correctly selected (see attached image). But then TC says "Waiting for ComboBox object" and times out and logs the error. If I could somehow tell TC not to bother waiting for the ComboBox at that point, it would be great.
Try putting a breakpoint in a few lines up from the one where you get the error. Run the test in debug mode and when it gets to the breakpoint, execute each line and watch the results. I'm suspicious that the combo box is getting clicked by one of the other lines in your program and then that in turn is messing up the timing so you get the errors.
I converted the test to script to use the debugger. I found that only the last line with ComboBox.ClickItem selects the menu item and causes the "Waiting for the ComboBox object" error. With the breakpoint on the last line (see image), it stops before selecting the item and waiting for the object. If I comment out the last line, it doesn't select the menu item or wait for the ComboBox object. Strange that it apparent;y executes ComboBox.ClickItem but then complains that it can't find ComboBox.