QTP:如何在多行编辑控件中匹配(或参数化)换行符?

时间:2011-04-05 15:22:50

标签: regex testing qtp

考虑这个脚本:

SystemUtil.Run "notepad.exe"
With Window("Notepad")
    .WinEditor("Edit").Type "A"
    .WinEditor("Edit").Type  micReturn
    .WinEditor("Edit").Type "B"
  .WinEditor("Edit").Check CheckPoint("Edit")
End With

“编辑”检查点只检查“编辑”WinEdit是否包含“A”,CR,LF,“B”。 (这正是编辑器所包含的内容,您可以通过查看GetROProperty ("Text")进行验证,它会返回长度为4的字符串,其中包含ASCII 65,13,​​10,66,这正是我所期望的。)我可以在录制脚本并通过活动屏幕click-o-magic插入检查点后,轻松创建此类检查点。

但现在假设我想参数化预期的字符串。 由于我无法在数据表单元格中输入换行符,因此我会将预期的字符串转换为正则表达式,例如"A\cM\cJB"。无论我是否将该正则表达式放入数据表中,它都不匹配。为什么?

或者还有其他方法可以参数化包含换行符的预期字符串吗?

另见问题QTP: How do I get the "complex value" edit control in the checkpoint property edit dialog?

1 个答案:

答案 0 :(得分:2)

事实:

  1. 中的换行符 检查点的预期值不是 支持的的。虽然这似乎 显而易见,事实上所有的正则表达式令牌 对于换行符,包括\cM\cJ, 未按预期方式处理。
  2. 值是否无关紧要 在数据表中(作为数据表 检查点的参数)或 插入检查站 直接
  3. 支持称这是因为用于在QTP中实现数据表编辑器的第三方Formula1组件无法使用换行符。
  4. (3)不可能是真的,因为那时(2)不是真的。
  5. 支持建议将公式放入数据表中,以提供所需的字符串,例如“="A"+Chr(13)+Chr(10)+Chr("B")”。

    我觉得这很令人愉快。

  6. 所以再一次,我回答了我自己的问题,但不是为了获得尊重点(我会获得任何收益吗?),而是与每个人分享“解决方案”或解决方法。

    使用的QTP版本是10.00。