Mercury Quick Test Pro 和虚拟机:可以在一台客户端计算机上运行,​​但不能在另一台客户端计算机上运行

StackOverflow https://stackoverflow.com/questions/91364

  •  01-07-2019
  •  | 
  •  

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

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

如果我使用另一台计算机(使用远程桌面)访问此虚拟机,脚本启动正常,但中途停止,QTP 没有任何错误消息,什么也没有。这台机器运行 XP,带有 Windows Classic 主题。

两种设置之间的一个区别是屏幕尺寸,笔记本电脑为 1920x1280,其他机器为 1280x1024。

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

有没有人以前遇到过这个问题,或者知道为什么两台机器之间的行为不同?

谢谢。

有帮助吗?

解决方案

好的。我已经找到问题了。事实上,脚本默默地失败了,因为这是编写脚本的人告诉它要做的事情。它无法验证屏幕外的内容,因此脚本失败。

问题在于 QTP 对“离屏”的定义。我的笔记本电脑上连接了两个屏幕,一个是笔记本电脑本身的屏幕 (1920x1200),另一个屏幕是 (1280x1024)。我使用远程桌面连接到 QTP 虚拟机,它使用笔记本电脑屏幕的设置。这意味着当我启动 QTP 脚本并将其移动到另一个屏幕时,它不适合,因此屏幕不再最大化,并且该对象部分超出屏幕,因此无法找到。

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

瞧。

其他提示

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

我手动创建所有存储库对象,查看源代码(在自动化 Web 应用程序测试的情况下)并在需要时使用对象间谍来获取帮助。我强调不要将任何定位信息作为我的对象定义的一部分,这正是您遇到的原因。

对于我的网络应用程序中与 Windows 交互的部分(打开要上传的文件等),对象间谍对于创建用于创建存储库对象的唯一标识符所需的试验和错误至关重要。但这是可以完成的。

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

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

例3:对话框中的打开按钮:
文本=“&打开”
对象类=“按钮”

祝你好运!

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

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

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

如果您使用 Infragistics,那么您应该知道他们通过其扩展了 QTP 的支持 测试优势 产品可能会解决您的问题。


编辑: @马蒂厄夫 说:

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

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

一些东西:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top