【问题标题】:QTP: How do I match (or parametrize) line breaks in multiline edit controls?QTP:如何匹配(或参数化)多行编辑控件中的换行符?
【发布时间】:2011-04-07 22:01:21
【问题描述】:

考虑这个脚本:

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?

【问题讨论】:

  • 支持人员告诉我他们不知道为什么它不起作用。他们说正则表达式似乎在这种情况下不起作用。我不同意,因为它们可以工作,只是换行符不起作用,所以我再次等待更新。

标签: regex testing qtp


【解决方案1】:

事实:

  1. 中的换行符 检查点的期望值不是 支持。虽然这看起来 很明显,实际上所有的正则表达式标记 对于换行符,包括\cM\cJ, 未按预期方式处理。
  2. 该值是否为 在数据表中(作为数据表 检查点的参数)或 插入检查点 直接。
  3. 支持人员表示这是因为用于在 QTP 中实现数据表编辑器的第三方 Formula1 组件不能使用换行符。
  4. (3) 不可能为真,因为那样 (2) 将不为真。
  5. 支持建议将公式放入提供所需字符串的数据表中,例如“="A"+Chr(13)+Chr(10)+Chr("B")”。

    我认为这很令人愉快。

因此,我再次回答了我自己的问题,但不是为了获得尊重点数(我会获得点数吗?),而是与大家分享“解决方案”或解决方法。

使用的 QTP 版本是 10.00。

【讨论】:

    猜你喜欢
    • 2015-09-20
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 2022-07-26
    • 2014-01-08
    • 2011-03-22
    • 2013-12-02
    • 2012-10-24
    相关资源
    最近更新 更多