考虑这个脚本:
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
编辑检查点只检查WinEditor的Text属性是否等于我们输入的内容:“A”,回车,换行,“B”。 (这正是编辑器包含的内容,您可以通过查看GetROProperty ("Text")
进行验证,它会返回长度为4的字符串,其中包含ASCII 65,13,10,66,这正是我所期望的。)
如果我使用最后一次Type调用的活动屏幕创建检查点并使用其中包含的值,则在对话框中获取“复杂值”编辑控件以编辑Text属性值。它只需按Enter即可支持输入换行符。到目前为止,非常好。
如果我手动创建检查点并手动输入Text属性的预期值,我会在那里得到一个简单的编辑控件。我无法在那里输入带换行符的字符串。
问题是:如果我最初没有创建具有“复杂”值的检查点,如何使用复数值编辑控件输入预期的字符串值,例如没有换行符的字符串?
如果我根本不能这样做,这将是一个设计故障 - 请考虑这一点:假设您使用活动屏幕创建它,然后您将预期值编辑为微不足道的东西。这导致从现在起仅使用简单的编辑控件可编辑的(微不足道的)预期值 - 我无法撤消我的更改并重新编辑预期值以包含换行符。
一个想法是创建一个正则表达式。上面示例的正则表达式为"A\cM\cJB"
。但是,这不起作用。一个单独的问题(QTP: How do I match (or parametrize) line breaks in multiline edit controls?)问为什么,所以让我们试着在这个问题中避免这个正则表达式方面。
另外,我想知道如果不作为正则表达式,我将如何将包含换行符的值参数化为数据表列。我无法在数据表单元格中输入换行符。但是这方面也存在于正则表达式问题中,所以我们也要避免这方面的问题。
答案 0 :(得分:1)
QTP的制造商;)承认这是“按设计”:)
解决方法可能是使用更新模式捕获值,包括包含CR LF序列的值。然后,可以返回“复杂值”编辑对话框。
但是,QTP GUI无法完全摆脱编辑“死胡同”。