2014-02-14 4 views
0

저는 얼마 동안 Swing Library와 함께 Robot Framework로 Java Swing 기반 애플리케이션을 테스트 해 왔습니다. Select Window 키워드가 화면에 표시되지만 원하는 창을 찾지 못하기 때문에 테스트 케이스 중 하나에 멈추었습니다. 여기 SwingLibrary와 함께 Robot Framework로 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에 의해 열거된다.

java.awt.Frame에 집중할 수있는 알려진 해결 방법이나 기존의 확장 라이브러리가 있습니까?

답변

0

스윙 라이브러리의 기존 소스 코드를 적용하여이 문제에 대한 해결책을 찾았습니다. 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(...); 
    } 

} 

을 또한 또한 java.awt.Frame의 인스턴스 구성 요소를 지원하도록 할 org.robotframework.swing.chooser.ByNameOrTitleFrameChooser 요구 클래스의 방법 private boolean titleMatches을 다음과 같이 그래서,이 클래스의 적응 버전 보인다.

마지막으로 클래스 org.robotframework.swing.keyword.window.WindowKeywords의 89 번째 줄을 제거해야합니다.

스윙 라이브러리의 새 버전은 mvn package을 사용하여 쉽게 만들 수 있습니다.