unable to find the control that opens in background in codedui - c#

I am currently working on AX form for automation . In one of the forms, I am trying to click a button , which opens another form and on this form I need to perform some action.
The window which I am opening on button click sometime opens in background and few times pop up in the foreground above the window where I have clicked the button.
I would want my window to open in the foreground so that I can perform operation , since it is opening in background the codedui playback is searching for the controls on the main window/parent window, which making test case fail
This is making my test case fails multiple times. I am using SetFocus property and SearchInMinimizedwindow options but none of them is working
Is there any solution to always get the window on foreground in codedui or in c#

I would suspect the popup window has some of the same automation properties as the parent window. If not able to fix this code side by using a different AutomationId, you may be able to workaround this by specifiying this is a different window instance.
SecondWindow.SearchProperties["Instance"] = 2;
SecondWindow.SetFocus();

The window that opens when you click the button, is that the child window of the Main window or does it exist on its own? Based on that, you will have to search on the parent (Main Window or Desktop).

Related

Click outside wpf window without losing focus

I was wondering if there is a window property, for a wpf application, that disables any actions outside of the window. For example, when you open a message dialog and click outside of it, the message dialog background flashes. Kind of saying you can't do any actions outside of the message dialog untill you click the 'OK' button. I want that implemented in some windows that I open in a program i'm developing but can't seem to find any info on it. Looking for ways on how i might approach this.
Try ShowDialog() instead of Show()
Opens a window and returns only when the newly opened window is closed.
Window childWindow = new Window();
childWindow.ShowDialog();
Note that it will prevent clicks only on parent window(s). Clicks on other applications or Desktop can't be prevented by the Dialog.

How to click on the button that is there in a content dialog for a UWP app using coded UI?

am testing an UWP app with coded UI. I have a content dialog box with two buttons Yes & NO.
Coded UI fails to find the control for Yes & No buttons.
In the test builder when I highlight the parent for the content dialog box is shown as the Main Window, not the content window.
That is the way to develop UWP apps.
To reproduce the similar problem, please follow the steps:
1) Open movies app
2) Click on the add button
3) Try to click on the add button
Coded UI throws an exception "Playback failed to identify the control"
Please help on how to resolve the issue, where in the parent is still been shown as main window.

close a WPF Dialog Window when the user clicks outside it

GoodDay, Here i want to minimize the WPF Window, While user clicking outside of the window.
I can easily minimize the window by this code
mywindow.WindowState= WindowState.Minimized;
but i want minimize the window at the time of clicking outside of the window.
i searched about that. But i can only got the output of various events like, FocusChanged,MouseMove,MouseDown like that. those are not solve my issue
You could use the Deactivatedevent. Have a look at the MSDN for further information.
A window is deactivated (becomes a background window) when:
A user switches to another window in the current application.
A user switches to the window in another application by using ALT+TAB or by using Task Manager.
A user clicks the taskbar button for a window in another application.

Most efficient way to get the handle of an Open window given its parent?

I'm working on a program to simultaneously control a handful of other programs of the same type.
So far I use EnumWindows() and collect the handles of the appropriate windows(programs) that I'm going to be controlling. Upon recognizing some keyboard keystroke, I iterate through all of the programs(there could be any number of them open) and I post click messages to all of these programs simultaneously by using EnumChildWindows() to find the appropriate windows(buttons) based on which keystroke was pressed and then using PostMessage() to actually send the click.
Each of these programs that I'm controlling has a button named "Load Settings" which opens an Open file dialog when clicked. What I would like to do is first use PostMessage() to click "Load Settings"(I have successfully gotten this far, what follows is what I'm trying to do). Then I want to get the handle of that Open file dialog window, fill in the text field with the path to the appropriate settings file that I've already determined, then click the "Open" button to finish the task and close the Open window.
My main problem is finding that Open window. Now, I can use EnumWindows once again to find that window but the problem with this is upon clicking "Load Settings" the Open window doesn't open instantaneously. I could sleep after clicking the button, then enum through the windows to find it, but that's not practical as the window could take any amount of time to open.
I've used spy++ to gather some information about this window, but as far as I know, none of it helps enough. Anyways, here is what I have found:
The window "Open" is the Previous Window to the program which it was opened from.
The window "Open"'s parent is the program which it was opened from.
The window "Open"'s owner is the program which it was opened from.
But even though it's listed as a child of the main program under its window properties, it's listed on the same level as the main program (it's not nested like other child windows).
I've tried FindWindowEx() and EnumChildWindows() but neither could find the Open window.
I would think there should be some way to, based on some handle, get the handle of the previous window.
Once that's working, then I need to fill the Edit(text field) window with the appropriate file path.
UIA is what you want, if your goal is to automate UI actions (e.g. for testing). UIA exposes the entire UIA tree which contains all applications active on the machine.
So what you'll see is a root node which has one child node for each application. Each of those nodes should represent the top level window of that application. Any further children depend on the application itself.
See more info at UIA Overview

c# open explorer window ont top

I'm using
System.Diagnostics.Process.Start("explorer", Application.StartupPath);
To open the applications path with a button press, but the window opens behind my application, how can I get it on top?
It may be due to TopMost property of the form may be true, or any of the properties of the form is making your application to stay on top. Just try to change the form properties and you will get the required result

Categories

Resources