我有一个ranorex项目,它通过单击应用程序中的5个按钮来自动化用例。 为了设置这个项目,我使用了记录功能。我在点击之间定义了一些休眠时间。 点击运行在一个循环中,循环计数是动态定义的。五个按钮中的一个按钮,总是相同的按钮,Ranorex有时会“忽略”。根据日志文件,该按钮可见并启用,并且ranorex还使用Click()运行代码,但应用程序未收到该单击。在代码中调用click之前,我用“If”检查按钮是否可见并启用 - 如果click()被调用(或没有),我将其记录到ranorexlog。有时应用程序正在运行并且所有点击都有效,有时这个按钮点击会丢失一次或多次。它不依赖于点击之间的休眠时间,因为我尝试了很长很短的暂停时间。它也不依赖于应用程序的焦点,因为我多次切换焦点。
有人知道这个问题,解决方法或我做错了吗?
答案 0 :(得分:0)
明显的解决方法是使用持续时间为0的Mouse.Click(“{Button}”)而不是调用click事件,或者如果要调用鼠标单击,则调用按钮单击操作。 (抱歉,因为他们都被命名为Click()我不知道你正在使用哪一个)。
至于发生了什么,从您的描述中可以看出,您的脚本正在查找具有相同xpath的多个元素。这会导致click事件出现问题,因为它可能会尝试单击该元素,但它是第一个与第二个匹配的xpath。是否出现按钮点击序列中的任何可选元素?例如,当您单击内部文本为“OK”的表单上的按钮时,内部文本为“OK”的繁忙微调器隐藏在视图中,如果xpath正在查找内部文本,则会导致找到两个元素好。导致这个元素可能没有被记录在记录器中,因为它当时可能不存在。
如果您使用Mouse.Click()(特别是如果这是一个网站)的另一种可能性是,您的按钮可能实际上不在屏幕上,我知道应该通过可见的检查来处理但是它虽然在屏幕上看不到会导致问题,但在dom上可见。
我强烈建议不要使用刻录机来创建需要重新运行的测试套件。实际上,使用间谍工具为您正在测试的产品创建存储库或多个存储库实际上会更好,这样您就可以确保xpath都是唯一的,使用记录器没有gaurantee。您实际上可以使用创建的存储库进行记录,并且在创建新项目之前,ranorex将尝试在存储库中查找项目,因此记录器将在创建记录时使用此存储库。