我一直在使用Robot Framework与Swing Library一起测试基于Java Swing的应用程序。我陷入了其中一个测试用例,因为Select Window
关键字在屏幕上找不到所需的窗口,尽管它是可见的。
以下是显示此测试用例的相关关键字的代码段:
...
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 Library的现有扩展,以便能够专注于java.awt.Frame
?
答案 0 :(得分: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 titleMatches
中的方法org.robotframework.swing.chooser.ByNameOrTitleFrameChooser
需要进行调整,以支持作为java.awt.Frame
实例的组件。
最后,需要删除班级org.robotframework.swing.keyword.window.WindowKeywords
中的第89行。
可以使用mvn package
轻松构建新版本的Swing Library。