昨天遇到一个QTP描述性编程的比较奇怪的现象,以前跑的好好的脚本突然验证失败了,经过多次尝试终于发现了其中的规律,那就是QTP在描述性编程上存在对象识别错误的情况。如果各位曾经遇到过这个问题,或者有好的解决方法的话,请指教。

案发现场如下:
在脚本中用描述性编程定义了对象
验证对象是否存在,然后点击这个对象并进行删除,到这里所有操作都是正常的
验证删除结果,判断对象是否存在,居然对象还是存在的!(这里就出现了错误)
但是,如果删除之后,验证对象是否存在之前如果再设置一下对象,则判断为对象不存在(正确)

脚本如下:
Set obj = Browser("XX").Page("XX").WebElement("innertext:=XX","html tag:=SPAN")
msgbox obj.exist(2)                -- True
obj.Click
obj.FireEvent "oncontextmenu"  --弹出右键菜单
Browser("XX").Page("XX").WebElement("删除(D)").Click                --删除
msgbox obj.exist(2)                -- True(有错)
Set obj = Browser("XX").Page("XX").WebElement("innertext:=XX","html tag:=SPAN")        --如果这里再次设置一下,就能判断正确了
msgbox obj.exist(2)  -- False

如果上面没有重新再设置一次,则以下方式也能得到正确结果,说明对象识别出现错误
msgbox Browser("FreeQuery").Page("FreeQuery").WebElement("innertext:=qqq","html tag:=SPAN","index:=0").exist(2)  -- False

另外,在某页面设置了对象,如果退出这个页面再进来,即使对象没有任何变化,也要重新定义一次,否则也会发生对象找不到的情况。

关于这个问题,为什么会这样,有什么方法避免,暂时还不清楚 ,希望各位大侠指点。