gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 17:09:30 27 4
gpt4 key购买 nike

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

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

提前致谢。

最佳答案

您刚刚发现 QTP 没有为与异步浏览器脚本执行同步提供任何显式支持 就像 AJAX 驱动的网站一样。当 QTP 认为页面已完全加载时,实际上仍有 JavaScript 处理程序在运行,可能会更新用于页面的 HTML,并且 QTP 会提前访问 GUI。
readyState是个好主意,但通常很容易找到效果不佳的情况。

1. 最好的解决方案是同步应用程序的“忙”指示器,如进度条或事件指示器。

不幸的是,等待忙指示符意味着忙指示符确实会出现,而且总是如此,但许多应用程序仅在该过程花费足够长的时间(超过 2 秒等)时才会显示。然后,这很快变得比预期的要困惑一些。

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

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

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

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

例如,对于 JavaScript 应用程序,我设法创建了一个工具,将事件流透明地报告给 QTP,在那里使用它来等待“足够长”,使人们能够设置等待某些事件的特殊检查点类库调用(尤其是“单击”,对于执行 AJAX 往返的应用程序,如 Java 服务器页面、“ajaxstop”、事件)在继续之前完成。

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

关于qtp - QTP如何等待页面加载动态数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25540965/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com