QTP Web可扩展工具包和ajax

5 ajax qtp

我正在尝试使用QTP测试一个使用ajax4jsf实现ajax功能的Web应用程序.QTP无法识别ajax何时完成.我已经读过,QTP 9.5和QTP 10提供的Web扩展性工具包是我的问题的解决方案.但是,我无法理解这对我有什么帮助:我需要知道httpRequest对象的就绪状态,并在状态为"完成"时继续测试.但我不知道如何从Web扩展工具包到达httpRequest.任何帮助,将不胜感激.

Eld*_*dad 2

谢谢您的回答。

我们确实使用 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)
  1. 单击按钮
  2. 进入一种忙等待循环:

    while (globalVariable != 1) {   
        _util.Wait(250);
    }
    
    Run Code Online (Sandbox Code Playgroud)

当 ajax 完成并更改 globalVariable 时,我们注册的函数将被调用,因此 while 循环将退出。我知道这很丑陋,但效果很好。

我们唯一的问题是 QTP 10 实现了 _util.wait 而 QTP 9.5 没有。如果没有等待,浏览器将陷入无限循环,并且永远不会调用注册的函数。任何有关在 Jscript 中实现非忙等待等待的解决方案都将受到高度赞赏。