考虑这个脚本:
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? ) 问为什么,所以让我们在这个问题中尽量避免这个正则表达式方面。
另外,我想知道如果不作为正则表达式,我将如何将包含换行符的值参数化为数据表列。我无法在数据表单元格中输入换行符。但这方面也在正则表达式问题中,所以让我们在这里也避免这个方面。
最佳答案
QTP 的制造者 ;) 承认这是“设计使然”:)
解决方法可能是使用更新模式来捕获包含 CR LF 序列的值。然后,可以返回到“复数值”编辑对话框。
但是 QTP GUI 明确地没有提供摆脱编辑“死胡同”的方法。
关于regex - QTP:如何在检查点属性编辑对话框中获取 "complex value"编辑控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5554229/