Just an fyi, you can use the debugger with a keyword test. Works the same way.
Put the breakpoint a few lines above the problem line and then use Step Into to execute each line and see exactly what it does and when. You may be able to observe a timing issue by doing it step by step this way.
In addition to everything that have been advised by @Marsha_R :
The problem looks like timing issue. I assume that you are using TestComplete 14. If my guess is correct, then this note from the documentation (https://support.smartbear.com/testcomplete/docs/general-info/whats-new.html#overall-improvements) might be relevant
As part of performance improvement, we have also updated algorithms in the Name Mapping subsystem. Earlier, in certain cases, the Name Mapping engine could wait for test objects longer than the timeout settings specified. This has been fixed. However, this change might cause issues in your tests: earlier, they could pass successfully because the waiting time was longer, but now, they might fail because the waiting time has become shorter. If you face such an issue, enlarge the Auto-wait timeout property of your project.
So, the reason of the problem may be the fact that the combo-box is (re)created and populated with data after the .OdfDataGrid.DatagridcellStream.Click(121, 9) command.
I would recommend to try to wait for the combo-box to be (re)created and continue after that. Try to change
and see if it helps.
I added the breakpoint as described, stepping into the code with F11. Somehow as a side-effect of the step-by-step process, when TC clicks on the ComboBox, it fails to select the menu item (leaving none selected), and then the usual wait for the ComboBox proceeds. So without debugging, it selects the correct item, then waits indefinitely for the ComboBox, and with the debug breakpoint and step-by-step, it fails to select the item, then indefinitely waits for the ComboBox.
Okay, so our theory of a timing issue is doing pretty well.
Now try @AlexKaras 's WaitAliasChild suggestion. I bet that will take care of it.
I tried using waitAliasChild as described, but the result was the same - it successfully selects the 4th of the ComboBox but then waits indefinitely for the Combobox.
I gather there's no way to tell TestComplete that it doesn't need to wait for the ComboBox, since it has alread successfully selected the correct item?
How clean is your Name Mapping? I'm wondering now if there is more than one instance of this child in there and TC is not waiting on what we think it's waiting on.
The quickest way to test is to delete the combo box from the mapping and see if the test still runs. You can remap it after that. Also make a backup copy of your name mapping file first, just in case.
I deleted the ComboBox mapping under NameMapping.Sys.AspenHysys.HwndSource_PopupRoot.PopupRoot, and as a result the 4th item was no longer selected at the end if the test. Then after appending to the end of the test, selecting the 4th item (which restores the name mapping), the test once again selects the 4th item but waits indefinitely for the ComboBox.
There's only the one ComboBox object in that branch of the name mapping. There are other ComboBox objects, but not under HwndSource_PopupRoot - they are in different UI controls.
It might be relevant that this combo box is more complicated than usual. You can make several selections, each with a drop-down, instead of 1 selection with 1 drop-down. I attached a picture of what object spy shows for the (1st) drop-down, before the 4th item (Kerosene) is selected, and after it is selected (how it looks when TC is waiting for the ComboBox). The ComboBox doesn't appear in the object spy's output - I guess the ComboBox is what appears and opens when you click on the item.
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.
Thank you a lot for the follow-up. I did not know the details provided by Alex from Support but now I will. 🙂