2014-02-14 26 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轻松构建。

相关问题