C# 检测ErrorProvider的错误消息

C# 检测ErrorProvider的错误消息,c#,automation,qtp,white-framework,errorprovider,C#,Automation,Qtp,White Framework,Errorprovider,当前场景只是原始应用程序的一个虚拟对象。我有一个带有两个文本框、一个ErrorProvider和一个按钮Validate的表单。当文本框为空并单击“验证”时,文本框前面会出现2个errorprovider,分别显示input 1 missing和input 2 missing。以下是表格 现在,我的自动化团队正在尝试检测errorProvider工具提示。他们正在使用QTP。在对测试方了解很少的情况下,我开始了我的分析。我在QTP中尝试的是 SwfEdittextbox1.GetErrorPro

当前场景只是原始应用程序的一个虚拟对象。我有一个带有两个文本框、一个ErrorProvider和一个按钮Validate的表单。当文本框为空并单击“验证”时,文本框前面会出现2个errorprovider,分别显示input 1 missing和input 2 missing。以下是表格

现在,我的自动化团队正在尝试检测errorProvider工具提示。他们正在使用QTP。在对测试方了解很少的情况下,我开始了我的分析。我在QTP中尝试的是

SwfEdittextbox1.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);
}

我不知道如何继续前进,如果我在正确的道路上。我将很高兴听到新的想法、建议或指导来实现这一目标。谢谢。

我终于找到了解决问题的办法

通过分析,我注意到QTP在读取.NETFramework4.0或更高版本的控件时遇到了一些问题

建议的解决办法:

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

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

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

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

希望能有帮助