0

我有一个 ranorex 项目,它通过单击应用程序中的 5 个按钮来自动化用例。为了设置这个项目,我使用了记录功能。我在两次点击之间定义了一些睡眠时间。带有点击的运行处于循环中,其中循环计数是动态定义的。五个按钮中的一个按钮,总是相同的按钮,Ranorex 有时会“忽略”。根据日志文件,该按钮可见且已启用,ranorex 还使用 Click() 运行代码,但应用程序未收到点击。在代码中调用 click 之前,我使用“If”检查按钮是否可见和启用 - 如果 click() 被调用(或不被调用),我将其记录到 ranorexlog。有时应用程序正在运行并且所有点击都正常工作,有时这个按钮点击会丢失一次或多次。它不依赖于点击之间的睡眠时间,因为我尝试了长而小的暂停时间。它也不依赖于应用程序的焦点,因为我多次切换焦点。

有谁知道这个问题,解决方法或我做错了什么?

4

1 回答 1

0

明显的解决方法是使用持续时间为 0 的 Mouse.Click("{Button}") 而不是调用单击事件,或者如果您正在调用鼠标单击,则调用按钮单击操作。(对不起,因为它们都被命名为 Click() 我不知道你使用的是哪一个)。

至于发生了什么,根据您的描述,听起来您的脚本正在找到多个具有相同 xpath 的元素。这会导致 click 事件出现问题,因为它可能会尝试单击元素,但它是第一个 xpath 与第二个不匹配。在出现的此按钮单击序列中是否有任何可选元素?例如,如果 xpath 正在寻找内部文本好的。这个导致的元素可能没有被记录器捕获,因为它当时可能不存在。

如果您使用的是 Mouse.Click() (特别是如果这是一个网站),另一种可能性是您的按钮实际上可能不在屏幕上,我知道应该通过可见检查来处理它,但它在即使 dom 在屏幕上不可见,也会导致问题。

我强烈建议不要使用记录器来创建需要重新运行的测试套件。实际上,最好使用 spy 工具为您正在测试的产品创建一个或多个存储库,这样您可以确保 xpath 都是唯一的,使用记录器没有保证。您实际上可以使用创建的存储库进行录制,ranorex 将在创建新项目之前尝试在存储库中查找项目,因此记录器将在创建记录时使用此存储库。

于 2014-09-04T20:17:00.747 回答