首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QTP Web可扩展性工具包和ajax

QTP Web可扩展性工具包和ajax
EN

Stack Overflow用户
提问于 2009-07-29 11:22:41
回答 2查看 5.5K关注 0票数 5

我正在尝试使用QTP进行测试,这是一个使用ajax4jsf实现ajax功能的web应用程序。QTP不能识别ajax何时结束。我读到QTP 9.5和QTP 10提供的web可扩展性工具包就是我的问题的解决方案。然而,我不能理解这对我有什么帮助:我需要知道httpRequest对象的就绪状态,并在状态为“完成”时继续测试。但我不知道如何从web可扩展性工具包访问httpRequest。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-05 06:38:50

感谢您的回答。

我们确实设法使用QTP Extensibilty工具包解决了这个问题: A4j使用在ajax之前和之后唤醒的侦听器队列(取决于侦听器的类型)。在我们的解决方案中,我们为每个ajax组件(例如webButton)实现了一个Jscript函数:

  1. 将globalVariable初始化为0
  2. 将一个新函数注册为onafterajax:

类型的侦听器

代码语言:javascript
运行
复制
_elem.ownerDocument.parentWindow.A4J.AJAX.AddListener({
        onafterajax: function(req, event, data) {
            globalVariable = 1;
        }
    });

  1. 单击按钮
  2. 进入忙碌等待循环:

while (globalVariable != 1) { _util.Wait(250);}

我们注册的函数将在ajax完成时调用,并更改globalVariable,以便退出while循环。我知道这很丑陋,但它工作得很好。

我们唯一的问题是QTP10实现了_util.wait,而QTP9.5没有,如果没有等待,浏览器将陷入无限循环,注册的函数将永远不会被调用。任何关于在Jscript中实现非忙等待等待的解决方案都将不胜感激。

票数 2
EN

Stack Overflow用户

发布于 2009-07-30 13:42:01

根据我使用AJAX调用自动化测试基于web的应用程序的经验,我建议您考虑以下几点。

  1. QTP的对象识别机制是寻找具有窗口句柄的图形用户界面对象。因此,只要有可能,只使用GUI对象。手动测试您也不会到达XmlHttpRequest对象,但它不会阻止您进行功能测试。您仍然可以根据GUI对象属性的更改同步各种事件。例如。“正在加载...”图像或文本出现/消失。下拉列表已停止添加新项目。这是你自己的应用程序,你可以开发一个更友好的enabled/disabled.
  2. If支持,在这里你可以使用可扩展性工具包中的指南。此外,作为测试构建选项,您可以包含一个图形用户界面对象(不可见的图像或文本元素),并使用它来指示AJAX transactions.
  3. Finally,的状态。您仍然可以直接访问DOM以访问非图形用户界面对象,尽管我没有以这种方式使用XmlHttpRequest对象的信息。

谢谢你,艾伯特·加列夫

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1199534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档