在做web测试时,页面上的HTML标签会包含各类事件:单击(onclick)、双击(onDblClick)、光标聚集(OnBlur)、onchange、onfocus、onmousedown、onmouseup、onmouseover、onmouseout、onsubmit、onreset、onpropertychange等。

在用QTP录制时,有可能会有一些事件录制不到。这时候你可以进行一些设置,QTP/tools/Web Event Recording Configuration/custom settings/event/add就可以添加你想要录制下来的事件啦。

当然,这篇文章的主题并不是上述这些。

先描述一下我的问题,项目中碰到一个列表控件,是采用ligerUI做的,双击列表中的一行,会读到这一行的内容,然后把数据赋给页面的其他标签,还包括一些隐藏域。

首先,我在录制的时候发现双击事件录不到(上述Web Event Recording Configuration已经设置好),于是采用低级别录制,双击事件顺利录制到。

接着,在回放的时候,发现双击事件失效,并没有如预期中的,我双击一个项,然后页面别的元素获取到他的值。

我的第一个操作是,因为知道整个页面实现的逻辑是,获取到每一项的唯一标志符后,把这个值赋给页面的一个隐藏域,然后后续的工作就都可以顺利进行了。因为这里涉及到隐藏域的问题,我们知道QTP采用的是对象识别的模式,意识就是,他只能识别他看的到的,在表面上显示出来的对象。这里采用DOM对象的方法,DOM是直接从源代码(HTML页面)获取对象。所以页面上的各种隐藏域,各种可以通过标签、ID、属性等获取到的对象就可以很顺利的在QTP中读取到。DOM对象也很简单,只需要在你想要识别的对象的父对象后面加上“ .Object ”,然后就可以通过getElementById("id")、document.getElementById("id")、getElementsByName("html tag")等各种js获取对象的方法来对页面为所欲为了。

比如这里,我的实现代码就变成了:

 set obj =  Browser("Browser").Page("Page").Object.getElementById("verifyID")
obj.value = ""

这个只是很肤浅的解决了问题,但页面上该显示正确值的地方的值还是空的。那就是说还得弄一个能真正解决该问题的方法。

现在我们就引入了fireevent方法。

fireevent是JS中的一个方法,以下摘自MSDN的解释

fireevent执行的效果就是“等同于”在目标元素上进行了相关操作。可以模拟各种包括单击在内的,文章一开头就列出来的各种操作。

那我上面遇到的问题的解决办法就是:

Set list =  Browser("Browser").Page("Page").WebElement("list").Object
list.document.getElementById("maingrid4|2|r1001").fireevent("ondblclick")

这样,我想要的双击事件的回放问题,就顺利解决啦。

参考文章:

    http://liuwei1578.blog.163.com/blog/static/4958036420082710309544/

    http://blog.csdn.net/zzzmmmkkk/article/details/5980602

QTP处理各类鼠标事件fireEvent的更多相关文章

  1. 7.JAVA之GUI编程鼠标事件

    鼠标事件: 功能: 1.基本窗体功能实现 2.鼠标移动监听,当鼠标移动到按钮上时,触发打印事件. 3.按钮活动监听,当按钮活动时,触发打印事件. 4.按钮被单击时触发打印事件. 源码如下: impor ...

  2. 手持设备点击响应速度,鼠标事件与touch事件的那些事

    前言 现在一直在做移动端的开发,这次将单页应用的网页内嵌入了app,于是老大反映了一个问题:app应用点击响应慢!我开始不以为然,于是拿着网页版的试了试,好像确实有一定延迟,于是开始了研究,最后选择了 ...

  3. css屏蔽元素的鼠标事件pointer-events

    // 屏蔽点击 $('body').css('pointer-events', 'none'); //恢复默认 $('body').css('pointer-events', 'auto');   用 ...

  4. 深入学习jQuery鼠标事件

    × 目录 [1]类型 [2]写法 [3]合成事件[4]鼠标按键[5]修改键[6]坐标位置 前面的话 鼠标事件是DOM事件中最常用的事件,jQuery对鼠标事件进行了封装和扩展.本文将详细介绍jQuer ...

  5. 深入理解DOM事件类型系列第一篇——鼠标事件

    × 目录 [1]类型 [2]顺序 [3]坐标位置[4]修改键[5]相关元素[6]鼠标按键[7]滚轮事件[8]移动设备 前面的话 鼠标事件是web开发中最常用的一类事件,毕竟鼠标是最主要的定位设备.本文 ...

  6. winform/窗体鼠标事件编程中的几个问题

    1.进行.net窗体的开发,经常用到鼠标事件,如MouseDown/MouseUp/MouseMove/MouseClick等.可是有时候给控件添加鼠标事件,就是不响应,怎么办呢! 答案:1.控件是否 ...

  7. JQuery事件之鼠标事件

    鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的. ():click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发. $('p').click(function( ...

  8. SDL鼠标事件

    鼠标事件有这么多种,手柄的可以忽视,Sdl.SDL_KEYDOWN,Sdl.SDL_KEYUP,Sdl.SDL_MOUSEMOTION,Sdl.SDL_MOUSEBUTTONDOWN,Sdl.SDL_ ...

  9. c#全局鼠标事件以及鼠标事件模拟

    最近在编写Max插件时,其主容器FlowLayoutPanel由于隐藏了滚动条,要实现按住鼠标中键上下拖动的功能,因此尝试了全局鼠标事件.以及鼠标勾子,可惜由于Max不争气?都未能实现,于是代码报废, ...

随机推荐

  1. Visual Studio 创建C++或C#Windows程序

    使用工具Visual Studio,创建一个C++或C#Windows程序,在主窗口中显示“Hello World”,用户可以用鼠标拖动“Hello World”在主窗口中移动 首先创建一个项目​ 选 ...

  2. ES6笔记一

    遍历数组: 1:传统的 for (var index = 0; index < myArray.length; index++) { console.log(myArray[index]);} ...

  3. MFC双缓冲绘图(2015.09.24)

    问题引入: 最近在尝试编写贪吃蛇游戏时遇到这么一个问题:当系统以较快频率向窗口发送WM_PAINT消息时,调用OnPaint()函数在窗口中绘制图形就会发生闪烁现象. 问题分析: 当我们把绘图过程放在 ...

  4. ie7中ul不能嵌套div和li平级

    我要讲一个忧伤的故事,本以为清晰的层次结构,ul里不能嵌套div和li平级,不然会乱乱乱! 代码: <ul class="catshow">              ...

  5. 16个常用IO流

    在包java.io.*:下 有以下16个常用的io流类: (Stream结尾的是字节流,是万能流,通常的视频,声音,图片等2进制文件, Reader/Writer结尾的是字符流,字符流适合读取纯文本文 ...

  6. mysql 基础列题

    1:emp表中查询公司总共有几个部门注意,会查询出来大量重复的,使用函数distinctselect distinct job from scott.emp; 2:查询公司工资在1000-3000之间 ...

  7. linux 并发 RCU

    What is RCU, Fundamentally? https://lwn.net/Articles/262464/ If you can fill the unforgiving secondw ...

  8. HTML5桌面通知:notification

    最近由于公司业务需要,领导要求IM消息有像网页微信那样有新消息桌面右下角弹出一个提示框的效果!由于自己才疏学浅,一时还没明白微信是怎么实现的!所以只能问百度(因为懒得FQ)咯! 在网上搜索了N久,心都 ...

  9. caffe初步实践---------使用训练好的模型完成语义分割任务

    caffe刚刚安装配置结束,乘热打铁! (一)环境准备 前面我有两篇文章写到caffe的搭建,第一篇cpu only ,第二篇是在服务器上搭建的,其中第二篇因为硬件环境更佳我们的步骤稍显复杂.其实,第 ...

  10. chp-adapter 文件结构

    1.需要接口给chp推送数据的Bean,写到/chp-adapter/src/main/java/com/creditharmony/adapter/service 文件夹中,并添加父类,供chp业务 ...