检测ErrorProvider的错误消息

时间:2013-07-02 18:23:55

标签: c# automation qtp white errorprovider

目前的情景只是原始应用程序的假人。我有一张包含2 textboxes,1 ErrorProviderbutton Validate的表单。如果文本框为空并且单击“验证”,则2 errorprovider将分别显示在文本框前面,分别显示input 1 missinginput 2 missing。以下是表格

enter image description here

现在我的自动化团队正在尝试检测errorProvider工具提示。他们正在使用QTP。由于对这个测试方面的了解很少,我开始进行分析。我在QTP中尝试的是

SwfEdit("textbox1").GetErrorProviderText()但没有用。我总是得到空文本。

然后我决定使用White框架来实现这些目标。我能够获取errorProvider控件但不知道如何获取每个文本框的错误消息。这是我写到现在的代码

AutomationElement rootElement = AutomationElement.RootElement;
var winCollection = rootElement.FindAll(TreeScope.Children, Condition.TrueCondition);

var automationElement = (from AutomationElement n in winCollection where n.Current.Name == "Error Provider Test" select n).FirstOrDefault();

if (automationElement != null)
{
    Condition propCondition = new PropertyCondition(AutomationElement.AutomationIdProperty, "errorProviderInput", PropertyConditionFlags.IgnoreCase);
}

我不确定如何继续前进,如果我走在正确的道路上。我很乐意听到实现这一目标的新想法,建议或指导。感谢。

1 个答案:

答案 0 :(得分:0)

我最终找到了解决问题的方法。

根据我的分析,我注意到QTP在阅读.Net framework 4.0或更高版本的控件时遇到了一些问题。

建议的解决方案:

  1. 如果在QTP安装后在机器上安装.Net框架,QTP通常无法检测.Net framework 4.0版本。从头开始的干净安装可能有助于解决问题。卸载QTP和.Net框架,然后先安装.Net框架,再安装QTP)。

  2. 要手动解决问题,我们必须手动注册2个dll。它们是Mercury.QTP.Agent.dll和Mercury.QTP.WpfAgent.dll。按照以下步骤注册dll。

    • 如果您使用的是64位操作系统,请安装QTP_00709补丁。
    • 以管理员模式打开命令提示符。
    • 导航到Mercury.QTP.Agent.dll和Mercury.QTP.WpfAgent.dll所在的位置。
    • 类型
  3. ..\..\bin\GACRegUtil4x86.exe -i Mercury.QTP.Agent.dll

    ..\..\bin\GACRegUtil4x86.exe -i Mercury.QTP.WpfAgent.dll

    希望它有所帮助。