如何优化Robot Framework以加速Angular应用程序的测试?

时间:2017-10-12 16:05:58

标签: angularjs performance robotframework

我知道在正常应用程序上优化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,我可以在其中工作。

编辑:我目前正在使用ExtendedSelenium2Library,但它隐含的等待并不总是有效,所以我想要第二层等待,但只要有必要。

1 个答案:

答案 0 :(得分:2)

首先要探索的解决方案是使用专门为基于Angular的Web应用程序设计的库,例如AngularJsLibraryExtendedSelenium2Library。据我所知,ExtendedSelenium2Library是最好的(但也许没有任何问题,我认为它确实有一些问题)

接下来要知道的是,鉴于您的元素确实可见,并不一定意味着它已准备好被点击。有很多方法可以解决这类问题。

一种方法是在测试设置中进行睡眠,以便为页面提供一些时间来完全初始化。我个人不是这个解决方案的粉丝。对于在初始化文档初始化后动态加载新内容的页面,此解决方案也不能正常工作。

另一种方法是将您的click元素包装在等待中,方法是在Python中编写自己的元素,或使用Wait Until Keyword Succeeds

之类的东西