2014-02-14 62 views
0

我一直在使用Robot Framework與Swing Library一起測試一個基於Java Swing的應用程序。我被困在其中一個測試用例中,因爲Select Window關鍵字在屏幕上找不到所需的窗口,雖然它是可見的。是否可以使用Robot Framework與SwingLibrary一起選擇java.awt.Frame?

這裏是顯示這個測試用例的相關關鍵字的代碼片段:

... 
Select Window  Main Window 
Push Button  Add Person 
List Windows 
Select Window  Person Manager 

前三行工作正常,但Select Window Person Manager失敗,出現以下相當短消息:

14:24:40 FAIL Frame with name or title 'Person Manager' 

在調試被測試的應用程序後,我發現了問題的根源:未找到的窗口是java.awt.Frame的實例。

有趣的是,它被List Windows列出。

是否有已知的解決方法或Swing庫的現有擴展能夠專注於java.awt.Frame

回答

0

我通過修改Swing Library的現有源代碼找到了解決方案。 它可以很容易地從github下載(https://github.com/robotframework/SwingLibrary)。 有三個類需要更改,以允許類型爲java.awt.Frame的窗口。

首先,有類org.robotframework.swing.window.FrameOperator。它不必延長JFrameOperator它必須延長FrameOperator。 所以,這個類的改編版本看起來如下:

public class FrameOperator extends org.netbeans.jemmy.operators.FrameOperator ... { 
    ... 
    private static ComponentChooser createRegExpChooser(String title) { 
      //change from JFrameFinder to FrameFinder 
      return new FrameFinder(...); 
    } 

} 

此外,在類中的方法private boolean titleMatchesorg.robotframework.swing.chooser.ByNameOrTitleFrameChooser需要適應也支持是java.awt.Frame實例組件。

最後,類org.robotframework.swing.keyword.window.WindowKeywords中的第89行需要刪除。

Swing Library的新版本可以使用mvn package輕鬆構建。

相關問題