none
AutomationElement 如何获取dropdown菜单的值

    问题

  • 相信用过AutomationElement的前辈们应该都遇到过这种问题了,像dropdown 菜单这样的控件是无法用UISpy,活inspect查找出来的!那遇到这种控件,大家是如何选择下拉菜单中的值的呢?

    我现在要写一个类似自动化测试的脚本,编辑框或组合框,都可以使用脚本填充,但唯独这种下拉菜单,无法获取到里面的值,甚至都无法定位和检测这种组件?该如何处理呢?(注:被测试方软件的源码无法查看)

    2016年8月14日 7:59

答案

  • 您好,非常感谢您提供的代码!

    这个代码段,针对普通的dropdown菜单应该可以!但针对那种自定义的,而且有多列的,该怎么去处理呢?(暂时无法传图片)

    点击某个输入框时,弹出,点击相应行可选择数据!但在UISpy中还无法看到它的结构!

    2016年8月18日 5:18

全部回复

  • 你好,

    下面的代码关于 AutomationElement dropdown的,你可以参考一下.

    public static void SelectDropdownItem(AutomationElement dropdownBox, string itemToSelect, bool navigateToParent = true)
    {
            var expandCollapsePattern = (ExpandCollapsePattern)dropdownBox.GetCurrentPattern(ExpandCollapsePatternIdentifiers.Pattern);
            expandCollapsePattern.Expand();
            expandCollapsePattern.Collapse();
    
            var listItem = dropdownBox.FindFirst(TreeScope.Subtree, new PropertyCondition(AutomationElement.NameProperty, itemToSelect));
    
            if (navigateToParent)
            {
                var controlViewWalker = TreeWalker.ControlViewWalker;
                listItem = controlViewWalker.GetParent(listItem);
            }
    
            object selectionItemPattern;
            if (listItem.TryGetCurrentPattern(SelectionItemPattern.Pattern, out selectionItemPattern))
            {
                var selectPattern = (SelectionItemPattern)selectionItemPattern;
                selectPattern.Select();
            }
    }

    Best regards,

    Cole Wu


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2016年8月16日 8:49
    版主
  • 您好,非常感谢您提供的代码!

    这个代码段,针对普通的dropdown菜单应该可以!但针对那种自定义的,而且有多列的,该怎么去处理呢?(暂时无法传图片)

    点击某个输入框时,弹出,点击相应行可选择数据!但在UISpy中还无法看到它的结构!

    2016年8月18日 5:18