51Testing软件测试论坛

标题: qtp:鼠标放在webedit上出现提示框,移出消失对象的获取---急---已解决 [打印本页]

作者: renquande    时间: 2011-5-4 15:25
标题: qtp:鼠标放在webedit上出现提示框,移出消失对象的获取---急---已解决
本帖最后由 renquande 于 2011-5-25 16:47 编辑

[attach]72853[/attach]qtp:现在遇到一个问题,当把鼠标放在一个webedit上出现提示框,移出鼠标后,该对话框消失,录制时这个对象无法获取,哪位大侠遇到过或者有好的解决方案,谢谢了,比较急---已解决
作者: 小孩    时间: 2011-5-4 16:54
本帖最后由 小孩 于 2011-5-4 16:57 编辑

看一下 HTML 是不是 有 title alt 的代码,或者有没有对应的DIV,用可以通过DOM取出你想要的东西
作者: shingo0109    时间: 2011-5-4 17:11
不用录制, 直接写代码吧,先用FireEvent的onmouseover方法, 然后再用GetROProperty方法取出文本
作者: shingo0109    时间: 2011-5-4 17:12
回复 1# renquande


不用录制, 直接写代码吧。
先用FireEvent的onmouseover方法将鼠标放上去, 然后再用GetROProperty方法来取出文本。
LZ试试吧
作者: 阿七    时间: 2011-5-4 17:43
回2楼   代码肯定有alt   他正常情况下是回显示提示内容的
作者: 阿七    时间: 2011-5-4 17:46
我觉得原因是录制的时候 没有获取到页面元素。  我推荐用firfore 的插件- XPath Finder 来定位这个元素的具体编号
作者: 阿七    时间: 2011-5-4 17:46
4楼的方法  需要加坐标吧
作者: 阿七    时间: 2011-5-4 17:47
如果 页面 放大  放小 怎么办咯    所以还是不好
作者: renquande    时间: 2011-5-5 10:29
回复 4# shingo0109


    这个方法怎么用呢,我用的时候报错,说缺少对象
作者: traning    时间: 2011-5-5 10:49
onmouseover试下
作者: shingo0109    时间: 2011-5-5 14:21
回复 9# renquande


可以不用坐标的吧。。。
可以在该WebElement上进行FireEvent, 参考如下:
Browser("CreationTime:=0").Page(":=").WebElement("xxxxx").FireEvent "onmouseover"

然后在显示出来的那些文本用GetROProperty("innertext")就行了
作者: hsjzfling    时间: 2011-5-5 14:55
本帖最后由 hsjzfling 于 2011-5-5 14:57 编辑

鼠标移开就会消失,所以捕获对象应该会很困难,LZ可以注意该webedit的各属性中是否包含该文本的信息,如果没有的话则view source,看看该文本是否是作为该文本的某一属性而存在,如果是这样的话,就可以通过.WebEdit(xxx).Object.属性名 的方式获取到该值. 一般web中是用title属性来作为鼠标悬停的文本显示.
作者: renquande    时间: 2011-5-6 11:08
我的这个整体的是一个table,
Browser("Browser").Page("Page").WebTable("保障项目")到这可以了
下面是我想做的
怎么把鼠标放到这个table的单元格上?,如果这样解决了这个问题也就解决

还有,为什么我录制的时候无法把webtable录制下来呢,加入对象库时,webedit上面就webtable,保存时,只保存了webedit,没有保存webtable,并且使用该webedit报错,提示无法识别该对象
作者: renquande    时间: 2011-5-6 11:26
回复 4# shingo0109


    先用FireEvent的onmouseover方法将鼠标放上去, 然后再用GetROProperty方法来取出文本

----怎么用呢,大概写个例子,看看吧,谢谢
作者: renquande    时间: 2011-5-6 11:28
回复 4# shingo0109


    先用FireEvent的onmouseover方法将鼠标放上去, 然后再用GetROProperty方法来取出文本

---------------------这两个方法怎么一块用呢,能写个例子吗,谢谢
作者: lyscser    时间: 2011-5-6 17:10
1、写FireEvent+onmouseover处理,参照help文档;
2、设置对象消息事件,录制出同1的代码;
3、WebTable对象抓入对象库,然后使用ChildObjects按WebElement的inntertext属性遍历,找到之后就好办了
表问具体怎么操作哈,因为可能这些方法照样解决不了你的问题,你得学会自己查help文档
作者: renquande    时间: 2011-5-9 10:40
回复 16# lyscser


   我现在已经找到了,不过还是不能把鼠标放上去之后显示的内容抓出来
作者: 17800455    时间: 2011-5-16 18:08
那怎么取出来的。给大家分享一下。
提示那个是,toolTip控件。
ToolTip(Control,text)
作者: v_v    时间: 2011-5-17 00:26
好贴 标记下。
作者: iQuickTest    时间: 2011-5-17 08:09
标题: null
切换捕获模式就能抓了。
作者: renquande    时间: 2011-5-25 16:39
此贴已结:
解决办法如下:
1、spy的时候按住ctrl键,鼠标已到相应的地方,等显示提示信息时,放开ctrl键,然后点击提示信息,就可以捕获该对象了
2、加入对象库的方式,qtp上面有个类似数据库的东西(object repository),弹出页面点+号的小图标(add objects to local),按住ctrl键,鼠标已到相应的地方,等显示提示信息时,放开ctrl键,然后点击提示信息,就可以捕获该对象了

代码示例:
With  Browser("人保财险营销平台").Page("人保财险营销平台").Frame("baofeishisuan")
       Dim i
                        rows = .WebTable("保障项目_2").RowCount
                        msgbox rows
For i=3 to rows               
wait 2
                        set  ttt=.WebTable("保障项目_2").ChildItem (i,4, "WebEdit",0)
                        ttt.FireEvent "onmouseover"
        If .webelement("折扣:5.00%续优:0.00%优惠金额:318.18折扣明").exist Then
                xx= .WebElement("折扣:5.00%续优:0.00%优惠金额:318.18折扣明").GetROProperty("outertext")
                                  msgbox xx     
                                 
'                 =======================================================================================================================
           '获取总共有多少行数据,test是sheet页的名字
           ' =======================================================================================================================
      H=DataTable.GetSheet("Action1").GetRowCount
          ' =======================================================================================================================
          '获取行,即使该行为焦点
          ' =======================================================================================================================
      DataTable.SetCurrentRow(H+1)
          ' =======================================================================================================================
          '给该行赋值 ,test和上面一样,是写入的sheet页的名字,tishi是     该sheet页中存在的一个列名
          ' =======================================================================================================================
      DataTable.value("tishi","Action1")=xx
          else
End If
Next                               
End With
作者: renquande    时间: 2011-5-25 16:43
此贴已结:
使用spy时候按住ctrl键不放,等鼠标异动到相应的地方后,显示提示信息后,放开ctrl键,点击该提示信息就可以获取该对象了
作者: renquande    时间: 2011-5-25 16:44
代码示例
With  Browser("人保财险营销平台").Page("人保财险营销平台").Frame("baofeishisuan")
  Dim i
                        rows = .WebTable("保障项目_2").RowCount
                        msgbox rows
For i=3 to rows               
wait 2
                        set  ttt=.WebTable("保障项目_2").ChildItem (i,4, "WebEdit",0)
                        ttt.FireEvent "onmouseover"
        If .webelement("折扣:5.00%续优:0.00%优惠金额:318.18折扣明").exist Then
                xx= .WebElement("折扣:5.00%续优:0.00%优惠金额:318.18折扣明").GetROProperty("outertext")
                                  msgbox xx
作者: renquande    时间: 2011-5-25 16:45
代码示例:
        set  ttt=.WebTable("保障项目_2").ChildItem (i,4, "WebEdit",0)
                        ttt.FireEvent "onmouseover"
        If .webelement("折扣:5.00%续优:0.00%优惠金额:318.18折扣明").exist Then
                xx= .WebElement("折扣:5.00%续优:0.00%优惠金额:318.18折扣明").GetROProperty("outertext")
                                  msgbox xx
作者: linna.zhou    时间: 2012-5-29 18:24
嗯,这个是个不错的法子。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2