我正在尝试使用QTP测试一个使用ajax4jsf实现ajax功能的Web应用程序.QTP无法识别ajax何时完成.我已经读过,QTP 9.5和QTP 10提供的Web扩展性工具包是我的问题的解决方案.但是,我无法理解这对我有什么帮助:我需要知道httpRequest对象的就绪状态,并在状态为"完成"时继续测试.但我不知道如何从Web扩展工具包到达httpRequest.任何帮助,将不胜感激.
谢谢您的回答。
我们确实使用 QTP Extensibilty 工具包解决了我们的问题:A4j 使用在 ajax 之前和之后唤醒的侦听器队列(取决于侦听器的类型)。在我们的解决方案中,我们为每个 ajax 组件(例如 webButton)实现了一个 Jscript 函数:
1. 将 globalVariable 初始化为 0
2. 注册一个新函数作为 onafterajax 类型的侦听器:
_elem.ownerDocument.parentWindow.A4J.AJAX.AddListener({
onafterajax: function(req, event, data) {
globalVariable = 1;
}
});
Run Code Online (Sandbox Code Playgroud)
进入一种忙等待循环:
while (globalVariable != 1) {
_util.Wait(250);
}
Run Code Online (Sandbox Code Playgroud)当 ajax 完成并更改 globalVariable 时,我们注册的函数将被调用,因此 while 循环将退出。我知道这很丑陋,但效果很好。
我们唯一的问题是 QTP 10 实现了 _util.wait 而 QTP 9.5 没有。如果没有等待,浏览器将陷入无限循环,并且永远不会调用注册的函数。任何有关在 Jscript 中实现非忙等待等待的解决方案都将受到高度赞赏。
| 归档时间: |
|
| 查看次数: |
5398 次 |
| 最近记录: |