Ask a Question

Process & Popup Window not recognized

jmoe
Occasional Contributor

Process & Popup Window not recognized

Hello,

I am a long time user & very familiar with TC up to version 14.93 and this is a first.   During an uninstall process from Add/Remove programs, a custom .NET confirmation window is displayed (install of the app is done through an .msi).  The popup window is in fact, an executable operating on its own thread.  Neither the window, nor it's process are recognized by Object Spy or Object Browser.  I also tried a Record session but that resulted in a one liner method "pass."  Strange indeed.  All filters in the OB are appropriately set to view all processes.  All extensions are installed.  I could see how a technology might not be supported and the window would not be "visible" to TC, but I'd think all user processes would at least display in the OB.  Any ideas on how to click through a series of two popup windows that TC has no clue about?

 

(Update) the install/uninstall was built with Windows WIX I'm told.

 

TIA

 

8 REPLIES 8
jkrolczy
Regular Contributor

How about try a script recording (without NameMapping on) and see what TestComplete generates code wise for you.  Reverse engineer to understand what is going on (if something is provided back from the script recording)

 

JamesK
rraghvani
Super Contributor

Using the Object Spy tool, are you able to capture the WndClass name of the window. If yes, can you add the WndClass name to Project Settings Properties -> Open Application -> MSAA

 

rraghvani_0-1665133795180.png

Is the Object Spy tool now able to identify each of the UI Objects?

 

jmoe
Occasional Contributor

Hi James.  Thanks for the reply.  Yeah, tried that.  It was a one liner in the test method and all it said was "pass."  Strange.

jmoe
Occasional Contributor

Hello rraghvani.  Thanks for the reply.  Absolutely nothing is returned, Object Spy, Object Browser, recording.  Like it doesn't exist, at least in TC's eyes.  But there it is displayed & in Task Manager.

chriscc
Contributor

Hi @jmoe ,

 

Assuming you can see the process in task manager, you could use that name to look for the process for a specified time and if found then terminate it.

 

Something like this:

 

if (Sys.WaitProcess("YourProcessName", 2000).Exists)
   Sys.Process("YourProcessName").Terminate();

 

 

Or if you have the System.Diagnostics.dll added in the Project's CLR Bridge, like this:

chriscc_0-1665517036407.png

 

Then you could possible utilize DotNet, like this: 

 

var processes = dotNET.System_Diagnostics.Process.GetProcessesByName("YourProcessName");
for (var i = 0; i < processes.Length; i++)
{
  var p = processes.Get(i);
  p.Kill();
}

 

 

Please note: this approach will terminate All process with the provided name.

 

I hope this helps.

 

Regards,

 

Chris
jmoe
Occasional Contributor

Thanks Chris, good idea.  I tried the first suggestion but same result, as in TC does not recognize the process, nothing returned.  For the second suggestion, I loaded from the GAC, but what is available to the dotNET object is the same, with or without the Process addition to the CLR Bridge.  In other words, the dotNET.System_Diagnostics.Process

is not available (dotNET.System_Diagnostics does have some available, but not .Process).  Seems like TC is not recognizing the CLR change even though I tried install/uninstall/reload numerous times.  Dunno.

 

8Kit
Frequent Contributor

@jmoe is this a UAC pop-up, where you are unable to move past the message until it is acknowledged? References and [here] and [here] may provide some insight.

rraghvani
Super Contributor

I'm not familiar with Windows WIX. However, I was able to interact with the WIX installer controls by adding the name to MSAA

 

rraghvani_1-1667220430757.png

 

Are you able to provide a screen shot of your uninstaller?

 

Are you not able to use command line arguments to un/install the application through TC?

 

cancel
Showing results for 
Search instead for 
Did you mean: