1

当前场景只是原始应用程序的虚拟。我有一个带有 2 textboxes、 1ErrorProvider和 a的表格button Validate。当文本框为空并单击验证时,文本框前面会出现 2 个错误提供程序,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);
}

我不确定如何继续前进,以及我是否走在正确的道路上。我很高兴听到实现这一目标的新想法、建议或指导。谢谢。

4

1 回答 1

0

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

通过我的分析,我注意到 QTP 在读取 .Net framework 4.0 或更高版本的控件时存在一些问题。

建议的解决方案:

  1. 如果在 QTP 安装后机器上安装了 .Net framework,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 的位置。
    • 类型

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

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

希望能帮助到你。

于 2013-07-22T09:07:40.600 回答