目前的情景只是原始应用程序的假人。我有一张包含2 textboxes
,1 ErrorProvider
和button Validate
的表单。如果文本框为空并且单击“验证”,则2 errorprovider将分别显示在文本框前面,分别显示input 1 missing
和input 2 missing
。以下是表格
现在我的自动化团队正在尝试检测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);
}
我不确定如何继续前进,如果我走在正确的道路上。我很乐意听到实现这一目标的新想法,建议或指导。感谢。
答案 0 :(得分:0)
我最终找到了解决问题的方法。
根据我的分析,我注意到QTP在阅读.Net framework 4.0或更高版本的控件时遇到了一些问题。
建议的解决方案:
如果在QTP安装后在机器上安装.Net框架,QTP通常无法检测.Net framework 4.0版本。从头开始的干净安装可能有助于解决问题。卸载QTP和.Net框架,然后先安装.Net框架,再安装QTP)。
要手动解决问题,我们必须手动注册2个dll。它们是Mercury.QTP.Agent.dll和Mercury.QTP.WpfAgent.dll。按照以下步骤注册dll。
..\..\bin\GACRegUtil4x86.exe -i Mercury.QTP.Agent.dll
..\..\bin\GACRegUtil4x86.exe -i Mercury.QTP.WpfAgent.dll
希望它有所帮助。