【问题标题】:System.Windows.Forms.ListView Check box is not recognized by UIA verrifyUIA 无法识别 System.Windows.Forms.ListView 复选框验证
【发布时间】:2014-08-27 11:04:27
【问题描述】:

我对 UI 自动化和 UI 验证工具很陌生。

在我们的应用程序中,我们使用 System.Windows.Forms.ListView 并将 CheckBoxes 属性设置为 true。

CheckBoxes 属性允许您在列表中的每个项目旁边显示一个复选框。这使您的应用程序能够显示项目列表(如果 View 属性设置为 View.Details,则显示子项目)

到目前为止,单个行和每行中的所有值都已识别。只有复选框不被 UI 验证识别。


命名空间 WindowsFormsApplication1 { 公共部分类Form1:表格 { 公共表格1() { 初始化组件()

        listView1.CheckBoxes = true;
        listView1.View = View.Details;
        listView1.Columns.Add("Automation");
        listView1.Columns.Add("result");
        listView1.Items.Add(new ListViewItem(new string[] { "1", "Pass" }));
    }

}

输出:值“1”和“pass”都被 UIA 验证识别。但是无法识别该复选框。


有没有其他人经历过类似的行为?如果是这样,有什么解决办法吗?

非常感谢所有的帮助。

问候 哈里哈拉

【问题讨论】:

    标签: ui-automation uia


    【解决方案1】:

    据我所知,整个列表项都支持切换模式。

    所以你应该能够使用行控件本身的切换模式。

        /// <summary>
        /// Toggles anything that supports the toggle pattern
        /// </summary>
        /// <param name="aeElement">Automation element to toggle</param>
        public void Toggle(AutomationElement aeElement)
        {
                TogglePattern tpToggle = (TogglePattern)aeElement.GetCurrentPattern(TogglePattern.Pattern);
                tpToggle.Toggle();
        }
    

    【讨论】:

    • 我遇到了类似的问题,但在使用 TestStack.White 时。我更改了我正在编写的代码,使其暴露了底层的 AutomationElement,并且我能够让这段代码为我工作。感谢您发布此内容。
    【解决方案2】:

    您是否使用“悬停”模式?尝试检查 UIA 验证程序窗口左窗格中复选框项目附近的窗格结构。

    【讨论】:

      猜你喜欢
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 2018-03-24
      • 2012-10-05
      • 1970-01-01
      • 2015-06-15
      相关资源
      最近更新 更多