QTP如何等待页面加载动态数据?

2023-12-30

我有一个场景,浏览器状态=完成,但页面仍未加载。 是否有一个常见的程序可以让 qtp 等待页面完全加载? 我尝试使用 objBrowzer.sync,objPage.Sync,objPage.waitproperty "readyState","completed",50。 但它并不总是有效。

我什至不能只有一个等待语句,以便它等待直到该对象出现。因为在不同的情况下存在不同的对象。 是否存在适用于所有场景的通用声明?

提前致谢。


您刚刚发现 QTP 不提供任何与异步浏览器脚本执行同步的显式支持就像 AJAX 驱动的网站一样。当 QTP 认为页面已完全加载时,实际上仍然有 JavaScript 处理程序在运行,可能会更新用于页面的 HTML,并且 QTP 会提前访问 GUI。

readyState这是一个好主意,但通常很容易找到效果不够好的情况。

1. 最好的解决方案是在应用程序的“繁忙”指示器上进行同步,如进度条或活动指示器。

不幸的是,等待繁忙指示器意味着繁忙指示器确实总是出现,但许多应用程序仅在该过程花费足够长的时间(超过 2 秒等)时才会显示繁忙指示器。然后,这很快就会变得比预期的更混乱。

2. 如果应用程序没有这样的东西,通常您可以通过同步一些“就绪”指示器来帮助自己,例如“出现了预期的字段”或“确定按钮消失了”。如果没有真正的“就绪”指示器(通常不存在),这通常需要针对每种情况制定特定的解决方案。

3. 在许多项目中,自动化人员可以在应用程序中为他们内置一个忙碌指示器。虽然这不会给开发人员带来很多工作量(因为现代应用程序有一个中央消息调度程序,因此可以轻松地集中跟踪“忙”到“空闲”状态和 vv 的转换),但它极大地简化了所需的工作量用于同步。

因此,如果可能的话,尝试联系开发人员并让他们提供测试机器人“同步”例程可以轻松轮询的属性(变量、内存映射文件、信号量,无论他们喜欢什么)。 (提示:为了能够区分两个“就绪”状态,即使在“丢失”这两个状态之间的“忙碌”状态之后,除了“忙碌状态标志”之外,获取连续的“忙碌状态计数”可能会有所帮助,因此您可能会在同一场合提出请求。)然后,所有同步问题都是应用程序中的缺陷,因为它显然没有正确维护就绪信号。

Update对于基于事实上的“标准”框架的应用程序,人们可能会找到以通用方式实现同​​步的方法。

例如,对于 JavaScript 应用程序,我设法创建了一种工具,可以透明地将事件流报告给 QTP,该工具用于等待“足够长的时间”,使人们能够设置特殊的类似检查点的库调用来等待某些事件(尤其是“单击”,以及对于执行 AJAX 往返操作的应用程序,如 Java Server Pages、“ajaxstop”事件),请在继续之前完成。

事实证明这非常有用,因为通常情况下,让开发人员实现对测试自动化需求的任何类型的支持都非常复杂,并且如果应用程序基于 GUI 的同步(仅通过测试对象状态/存在)有时是不够的在后台执行异步请求。它还消除了为每个 GUI 上下文探索同步选项的需要,这可能非常耗时和/或不可靠。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QTP如何等待页面加载动态数据? 的相关文章

随机推荐