我知道在正常应用程序上优化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}
我知道机器人框架并不是为了速度而建造的,但是对于长时间的测试我已经厌倦了等待它完成的10分钟无所事事,只是看到我有一个错误的[Fail]
。如果解决方案涉及Python,Javascript或Java,我可以在其中工作。
答案 0 :(得分:2)
首先要探索的解决方案是使用专门为基于Angular的Web应用程序设计的库,例如AngularJsLibrary或ExtendedSelenium2Library。据我所知,ExtendedSelenium2Library是最好的(但也许没有任何问题,我认为它确实有一些问题)
接下来要知道的是,鉴于您的元素确实可见,并不一定意味着它已准备好被点击。有很多方法可以解决这类问题。
一种方法是在测试设置中进行睡眠,以便为页面提供一些时间来完全初始化。我个人不是这个解决方案的粉丝。对于在初始化文档初始化后动态加载新内容的页面,此解决方案也不能正常工作。
另一种方法是将您的click元素包装在等待中,方法是在Python中编写自己的元素,或使用Wait Until Keyword Succeeds
之类的东西