当我测试 GUI 时,元素出现和消失得太快



我正在使用Webdriver.io摩卡的工具测试GUI。测试本身是用CoffeeScript编写的。某些界面元素加载时间较长,并出现旋转加载指示器。为了继续测试过程,需要等待数据完全加载(即等到加载指示器消失)。此过程是使用函数(1)执行的:

wait_for_page_load = () ->
$('... load indicator selector ...').waitForDisplayed(20000)
$('... load indicator selector ...').waitForDisplayed(20000, true)

在第一行中,我希望下载指示器变得可见的那一刻。在第二学期,我预计加载指示器会消失。

但是,在此过程中,我遇到了下载指示器出现和消失太快的情况。同时,我根本没有时间"捕捉"加载指示器,因为在那一刻,当我期望它出现时,它已经消失了。同时,控制台中会显示一条错误消息:

element ("... load indicator selector ...") still not displayed after 20000ms

我找到了摆脱这种情况的方法。当发生类似问题时,我只修复了加载指示器的消失。此过程是使用函数(2)执行的:

wait_for_page_load = () ->
$('... load indicator selector ...').waitForDisplayed(20000, true)

应该注意的是,随着加载指示器的快速消失,也不可能完全不等待 - 在这种情况下,新数据将没有时间加载。

但是,在某些情况下,我无法提前确定加载指示器的确切可见时间:有时它几乎立即消失,并且我无法跟踪它出现的时刻,在这些情况下我必须使用功能(2);有时它会旋转很长时间,并且可以使用功能(1)跟踪其出现的时刻。

是否可以编写一个通用函数来修复图形元素的外观和消失,即使该元素出现和消失得非常快?

到目前为止,我已经找到了以下解决问题的方法。在需要等待加载指示器消失的情况下,我先超时一秒钟,然后等待加载指示器消失。

utilities.wait_for_page_load = () ->
browser.pause(1000)
$('... селектор индикатора загрузки ...').waitForDisplayed(20000, true)

因此,如果下载指示器出现和消失得太快,那么在超时结束时,它将不再出现在屏幕上,分别,我们自动等待下载指示器消失。如果下载指示灯长时间挂在屏幕上,那么在超时结束时,我们只是继续等待它消失。

该方法并不理想。它的主要缺点是增加了总测试运行时间。但是,该方法是通用的,允许您处理问题中描述的两种情况。

相关内容

  • 没有找到相关文章

最新更新