我知道优化 Robot Framework 以提高正常应用程序速度的基础知识,但这不是正常应用程序。这不是尽可能快的问题,因为如果代码在 Angular 应用程序上执行得太快,它会尝试单击未启用或不可见的元素,或者尚不存在的元素。时间问题比比皆是,结果是我使用关键字(如下)来普遍减慢我的程序。问题是它是硬编码的,我正在寻找一种更“程序化”(程序化?我不知道确切的术语)的解决方案,该解决方案将等待一个元素可点击,然后尽快点击它是。
这是我在每次点击后使用的关键字(${SLOW_TIME}
是设置为 0.5s
的全局变量):
Slow Down
# EXAMPLE USAGE
# Slow Down ${SLOW_TIME}
[Arguments] ${SLOW_TIME}
Sleep ${SLOW_TIME}
这是我当前的解决方案,编写该解决方案是为了验证元素是否已准备好单击以进行测试验证目的,而不是速度。它不完整(需要“可点击”)并且偶尔会导致程序等待的时间超过其必须的时间:
Verify Element Is Ready
# EXAMPLE USAGE
# Verify Element Is Ready id=myElementId
# Click Element id=myElementId
[Arguments] ${element}
Variable should exist ${element}
Wait until element is visible ${element}
Wait until element is enabled ${element}
我知道 Robot Framework 并不是为了速度而构建的,但对于长时间的测试,我厌倦了 10 分钟等待它完成而不做任何事情,结果发现我有一个不正确的 [失败]
。如果解决方案涉及 Python、Javascript 或 Java,我可以使用它。
编辑:我目前正在使用 ExtendedSelenium2Library,但它的隐式等待并不总是有效,因此我想要第二层等待,但只在必要时进行。
最佳答案
要探索的第一个解决方案是使用专门为基于 Angular 的 Web 应用程序设计的库,例如 AngularJsLibrary或ExtendedSelenium2Library 。据我所知,ExtendSelenium2Library 是效果最好的一个(但也许并非没有任何问题,我认为它确实有一些问题)
接下来要知道的是,鉴于您的元素确实可见,这并不一定意味着它已准备好被单击。有很多方法可以解决此类问题。
一种方法是在测试设置中进行 sleep ,以便给页面一些时间来完全初始化。我个人不喜欢这个解决方案。对于在初始文档初始化后动态加载新内容的页面,此解决方案也效果不佳。
另一种方法是将您的 click 元素包装在等待中,可以通过用 Python 编写自己的元素,也可以使用 Wait Until Keyword Succeeds 之类的东西。
关于angularjs - 如何优化 Robot Framework 以加快 Angular 应用程序的测试速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46714202/