2017-10-12 15 views
2

我知道优化Robot Framework的基本知识,以提高正常应用程序的速度,但这不是一个正常的应用程序。这不是一个尽可能快的问题,因为如果代码在Angular应用程序上执行得太快,它会尝试点击未启用或可见的元素或尚不存在的元素。定时问题比比皆是,结果是我使用关键字(下方)来普遍减慢我的程序。问题在于它是硬编码的,我正在寻找一个更“程序化的”(程序?我不知道确切的术语)解决方案,它将等待元素被点击,然后在它是。如何优化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} 

我知道,机器人框架不是专为速度,但长期测试中,我” m厌倦了10分钟无所事事的等待它完成,只能看到我有一个不正确的[Fail]。如果解决方案涉及Python,Javascript或Java,我可以工作。

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

+0

这心不是一个真正的答案 - 但你说你正在等待10分钟,看是否它失败或通过。为什么不创建一个有你创建的这个新测试的“沙箱”,看看它是否有效。它会在几秒钟内失败,如果通过,您可以将其添加到主文件的末尾。如果这有道理?然后,当它添加到主文件时,它应该正常工作,如果安装和拆卸正确完成。 – Goralight

+0

它确实有道理,我通常这样做,但有时与主文件本身的集成即使不应该也会导致失败,并且运行整个测试以查看它是否一起工作需要很长时间。 –

+0

为什么在等待它可见之后立即调用'element should be visible'?这似乎是多余的。 –

回答

2

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

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

一种方法是在您的测试设置中进行睡眠,以使页面有一段时间完全初始化。我个人不是这个解决方案的粉丝。对于在初始化文档初始化后动态加载新内容的页面,此解决方案也不能很好地工作。

另一种方法是来包装你点击元素在等待,要么通过编写自己在Python或使用类似Wait Until Keyword Succeeds

+0

我为此答案+1,因为它包含有用的信息,但它不回答我的问题,它指的是我试图逐步淘汰的东西。我目前正在使用睡眠的高级形式,但我希望逐步找出适合各个元素的东西。另外,我已经在使用ExtendedSelenium2Library(我的不好,我忘了提及我正在那样做)。但是,我不知道等到关键字成功,所以非常感谢。 –

+0

@BrandonOlson你有没有试过AngularJSLibrary?如果是这样,那什么不起作用?看过它的代码,我认为它包含了你想要的AngularJS特定的睡眠函数。 –

+0

我没有。它是否与ExtendedSelenium2兼容? –

相关问题