Mercury Quick Test Pro和虚拟机:从一台客户端计算机运行,但不在另一台客户端计算机

时间:2008-09-18 10:05:26

标签: vb.net automated-tests qtp

我安装了Mercury Quick Test Professional 9.2的虚拟机(VMware)。我有一个测试应用程序的脚本,使用Infragistics库在VB.NET中编写。

如果我使用笔记本电脑(使用远程桌面)访问此虚拟机,一切正常,脚本完成没有问题。我的笔记本电脑使用Windows经典主题运行XP。

如果我使用另一台计算机(使用远程桌面)访问此虚拟机,则脚本启动正常,但在中途停止,而没有来自QTP的错误消息,没有。这台机器运行XP,带有Windows经典主题。

两种设置的区别在于屏幕尺寸,笔记本电脑为1920x1280,其他机器为1280x1024。

脚本停止的步骤涉及检查UltraWinGrid中的复选框。显示复选框本身,在两种情况下均显示在屏幕上。

之前是否有人遇到此问题,或者知道为什么两台机器之间的行为有所不同?

感谢。

5 个答案:

答案 0 :(得分:5)

行。我发现了这个问题。实际上,脚本是默默地失败的,因为编写脚本的人告诉它要做的事情。它无法验证屏幕外的内容,因此脚本失败了。

问题是'off screen'的QTP定义。我有两个屏幕连接到我的笔记本电脑,笔记本电脑本身的屏幕(1920x1200)和另一个屏幕(1280x1024)。我使用远程桌面连接到VM ​​for QTP,它使用笔记本电脑的屏幕设置。这意味着当我启动我的QTP脚本并将其移动到另一个屏幕时,它不适合,因此屏幕不再最大化,并且对象部分偏离屏幕,因此无法找到。

修复很简单:在远程桌面中,使用“显示”选项卡,并将屏幕大小设置为1280x1024,QTP没有任何问题。

瞧。

答案 1 :(得分:1)

如果您没有使用专家模式,和/或允许QTP完成大部分工作来创建存储库对象,那么它是按像素引用所有内容。

我手动创建所有存储库对象,查看源(在自动Web应用程序测试的情况下)并在需要时使用Object Spy提供帮助。因为你正在运行的原因,我指出没有任何定位信息作为我的对象定义的一部分。

对于与Windows交互的Web应用程序部分(打开要上载的文件等),Object Spy对于创建用于创建存储库对象的唯一标识符所必需的试验和错误至关重要。但它可以做到。

Ex1:文件浏览对话框
text =“选择文件”
nativeclass =#32770(显然是文件打开对话框的一些Windows VooDoo?)

Ex2:浏览对话框中的文件名文本框:
nativeclass =“编辑”
附加文本“文件和名称:”(更多Windows VooDoo?如果没有“&”,它对我不起作用)

Ex3:对话框中的“打开”按钮:
text =“& Open”
object class =“Button”

祝你好运!

答案 2 :(得分:1)

澄清点:您提到QTP停止时没有错误消息。这是否也意味着测试结果日志文件也没有错误消息?如果日志中包含任何信息,则可能有助于诊断问题。你可以在脚本失败时分享代码行吗?

此外,远程桌面将调整远程计算机上的桌面大小。虽然QTP脚本本质上不是基于坐标的,但是单个语句可以相对于对象基于坐标。在这方面,该决议可能是一个问题。例如,假设您在更高分辨率的计算机上记录了像Button.Click(5,150)这样的行。但是如果你试图在较低分辨率的机器上播放它,并且150在较低分辨率下超出了对象的界限,则可能会引起问题。

答案 3 :(得分:0)

QTP 使用屏幕坐标除非作为最后的手段,如果对象被识别为高级对象(在这种情况下为SwfTable)你应该没问题,如果QTP没有不会识别它回落到WinObject的对象和屏幕坐标。

如果您正在使用Infragistics,那么您应该知道他们使用TestAdvantage产品扩展了QTP的支持,这可能会解决您的问题。


修改 @ MatthieuF说:

  

事实上,我们使用Infragistics插件进行QTP,我们仍有问题

你能给我一个失败线的例子吗?

答案 4 :(得分:0)

一些事情:

您应该能够轻松地在VM上进行调试 - 只需等待它停止,进入对象存储库,并查看它是否可以识别对象。如果否,则使用对象间谍来确定操作系统之间的不同属性。如果存在差异,则可以始终将该属性设置为正则表达式,并检查两种可能性。

假设这不是问题,如果远程窗口关闭或最小化,我们在使用带QTP的远程桌面时会遇到问题。对于我们来说,这是一个当RDP窗口不可见时无法更改剪贴板的问题,但是当以这种方式使用QTP时可能会有其他惊喜。