I need to automate a Winform application. How do I set the AutomationID
(or AutomationName
) like the the XAML in this article does?
From this stack overflow article the answer seems to be no, unless I switch the application to a WPF application (so I can use XAML to define the controls).
I have tried this naïve approach:
AutomationElement formAutomation = AutomationElement.FromHandle(this.Handle);
formAutomation.Current.Name = "SandboxResponseDialogName";
formAutomation.Current.ClassName = "SandboxResponseDialogClassName";
formAutomation.Current.AutomationId = "SandboxResponseDialogID;
But at this point in the constructor for the control, these Automation properties have getters only; no setters.
If you want to set anything in relation to UI Automation
in code, you need to use this:
using System.Windows.Automation;
And in your code:
YourObjectClass element = // just get your element.
element.SetValue(AutomationProperties.AutomationIdProperty, "elementAutomationID");
You can also use AutomationProperties.NameProperty
for the UIAutomation Name. AutomationProperties
contains all the properties for UIAutomation elements (setter and getter) as the name suggest.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With