在 TestComplete 中如何获取在 OnLogCheckPoint 事件期间从哪个对象调用对象检查点?

In TestComplete how to get which object the Object Checkpoint was called from during OnLogCheckPoint Event?

我目前正在测试 运行 测试完成时自动检测测试信息。

所以我的要求是这样的

  1. 我在 testcomplete 中创建了一个测试
  2. 我附加了具有我自己的代码的 OnLogCheckpoint 事件。
  3. 在那里我可以获得对象检查点的检查点属性(它们在 LogParams 中可用)
  4. 但是我找不到获取对象检查点被调用的对象的方法。

有什么方法可以从 OnLogCheckpoint 事件或其他方式的脚本中获取这个 object/alias 在其上执行对象检查点的方法。

OnLogCheckpoint 事件在检查点消息发布到日志时触发,现在在执行检查点时触发。有一个重要的区别:在第一种情况下,事件的目标是日志消息而不是对象树中的实际对象。

但是,在一般情况下,此类消息包含您需要的对象名称。因此,您可以解析日志消息以获取对象的名称。这是一个针对 属性 检查点消息执行此操作的示例脚本 (JScript)。我没有使用其他检查点类型对其进行测试,但此代码可能无需任何更改或只需很少的更改即可与它们一起使用。

function GeneralEvents_OnLogCheckpoint(Sender, LogParams)
{
  Log.Message("Object name: " + getObjectNameFromCheckpointMessage(LogParams.StrEx));
}

function getObjectNameFromCheckpointMessage(str)
{
  var re = /<th class='BoldLineTop HB'>Object name:<\/th>\s+<th class='BoldLineTop'>((\w|\(|\)|\.|\s|,|-|")+)<\/th>/;
  var m = re.exec(str);
  if (m === null)
    return "";

  return m[1];
}

更新:

以下示例脚本显示了如何获取使用对象检查点验证的对象的名称。获取的名字是简称,好像没办法获取全名

function GeneralEvents_OnLogCheckpoint(Sender, LogParams)
{
  Log.Message("Object name: " + getObjectNameFromObjectCheckpointMessage(LogParams.StrEx));
}

function getObjectNameFromObjectCheckpointMessage(str)
{
  var re = /Click here to show or modify data of the checkpoint \"(\w+)\"\./;
  var m = re.exec(str);
  if (m === null)
    return "";

  return Objects.StoredObject(m[1]).Name;
}