2017-10-12 14 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兼容? –

相關問題