简体   繁体   中英

UI-Automation cmdlet not finding the control

I am trying to test a WPF application using the UI-Automation framework that MSFT provides. There were a few powershell scripts written that invoked the cmdlets created to manipulate the visual controls of the application.

There is a DropDown within my application that has an entry 'DropDownEntry'. In my cmdlet, I am trying to do something as follows:

 AutomationElement getItem = DropDown.FindFirst(TreeScope.Descendants,
 new AndCondition(
 new PropertyCondition(AutomationElement.ControlTypeProperty,ControlType.ListItem),
 new PropertyCondition(AutomationElement.NameProperty, "DropDownEntry",PropertyConditionFlags.IgnoreCase)));

The above given snippet returns 'null' upon execution which essentially means that the above given logic was unable to find my dropdown entry.

Can somebody tell me why this might be happening? I checked the name of my control and the values. Everything seems to be in order. I am not sure why this would be happening. Any help would be much appreciated.

Thanks

Since it is a DropDown control you are automating, it may be that the child items are not available through UIAutomation until the DropDown is dropped down.

You need to get hold of the ExpandCollapse pattern from the DropDown element, then call its Expand method.

I created some extension methods to help with getting hold of patterns. Here's one example

public static class PatternExtensions
{
    public static ExpandCollapsePattern GetExpandCollapsePattern(this AutomationElement element)
    {
        return element.GetPattern<ExpandCollapsePattern>(ExpandCollapsePattern.Pattern);    
    }

    public static T GetPattern<T>(this AutomationElement element, AutomationPattern pattern) where T : class
    {
        object patternObject = null;
        element.TryGetCurrentPattern(pattern, out patternObject);

        return patternObject as T;
    }
}

Use it like this:

DropDown.GetExpandCollapsePattern().Expand()

Then you can execute your original code to find the child element.

如果还没有,您可能需要使用UISpy检查应用程序以验证属性。

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM