我在选择 Web 列表框时在 QTP 中遇到问题,我已经用尽我所知道的方法来解决它。我希望有人可以提供帮助。
一个容器中有5个控件,2个webedit控件和3个weblist控件。它们一起允许输入与客户关联的帐户,并且任何客户都可以有 16 个帐户。任何时候只有五个控件处于活动状态,无论是编辑还是输入帐户信息。输入并接受帐户信息后,它会变为只读表格行,并且在其下方出现一组新控件,用于输入下一个帐户。
在这些控件中输入的信息是帐号、类型、描述、名称和状态。状态值取决于指定,并且列表中的项目根据用户为指定指定的内容而动态变化。在指定指定之前,不会启用状态列表。
经过一些时间试验后,我能够解决一个问题,即第一个帐户的状态列表被 QTP 视为已禁用,即使它已明确启用。然后我可以进入第二个帐户。
我更改了第二个帐户的名称,并尝试在状态列表中选择适当的项目(在数据表中指定)。我从未找到数据表中的规范。我认为这是措辞差异的问题,而且我可能应该预料到这个问题并现在解决它,所以我编写了一个函数来接受三个参数、列表和最多两个搜索项。我的函数搜索传递给它的列表框,并在它收到的搜索项上查找匹配项(全部或部分)。这是我遇到一个重大问题的地方。
我的函数收到的控制列表来自上一次测试迭代,对应于该帐户的指定。这就是为什么我的函数没有找到选择项的原因。屏幕上的列表显示了相应的项目,这表明我正在查看错误的对象。当我使用 select 语句将数据表值直接放入列表时,也会收到“对象已禁用”消息。
活动控件显示在先前输入帐户的只读表示下方。我对 QTP 很陌生,但我也阅读了文档。在这一点上,我唯一的理论是 ATP 没有将正确的列表传递给我的函数……也许它是如何学习的,包括位置,每次都会改变。但是,间谍将屏幕控制识别为我为前一个帐户处理的同一项目,这使我的理论受到怀疑。此外,其他四个不是动态变化的控件也不存在同样的问题。我可以始终如一地将信息放入其中。
对于这个问题的长度,我深表歉意,但我想尽可能彻底和清楚。谁能帮我克服这个障碍。