我用html创建了一个简单的表单,其中有两个对象(编辑框 - 名字)具有相同的属性(如名称,输入和其他),一个在另一个下面。我在其中一个编辑框中记录了一个动作,并在Local对象存储库中添加了对象,Index为'0'(因为它在源代码中的顺序)。
然后我将Index的值修改为'1',以便同一个对象引用具有相同属性的第二个编辑框,但在QTP中不会发生。
一旦添加了序号标识符,虽然我们在对象存储库中修改它,但它确实在存储库中更新,我们可以查看相同的。但是在修改时它并不像它那样,即在我们运行脚本的情况下它应该引用第二个“名字编辑框”,但它不会发生,为什么?
为了简要介绍我的问题,一旦在对象存储库中修改了序号标识符,即使它显示为更新,也没有真正更新,为什么?
答案 0 :(得分:2)
QTP中有一个特定于Web的优化,您似乎已遇到此问题。除常规描述外,QTP还将sourceIndex
存储为隐藏属性。然后,当尝试识别对象时,它将首先检查具有存储的sourceIndex
的HTML对象是否与描述匹配,如果是,则假定它是正确的对象并且不搜索整个DOM。
由于序数(在本例中为索引)是仅在多个对象匹配时用于标识的特殊属性,因此sourceIndex
优化会绕过索引的使用。
在QTP的更高版本中(我认为是11)QTP还将生成的XPath存储到具有类似功能的对象。 您可以在工具→选项→网络→高级
中禁用这些优化