2013-01-01 4 views
3

Silverlight 웹 응용 프로그램의 경우 Ranorex automation framework을 사용하여 몇 가지 테스트 사례를 자동화했습니다. 이 테스트 케이스는 화면에서 특정 메시지를 호출하기 위해 단추를 클릭하는 것과 관련이 있습니다. 화면에서 버튼을 잡으려면 먼저 Ranorex 버튼 객체를 만든 다음 Ranorexpath을 사용하여 해당 요소를 가리 키십시오. 그런 다음 RanorexButton.Click() 이벤트를 사용하여 버튼을 클릭합니다. 그러나이 이벤트는 신뢰할 수 없습니다. 때로는 작동하며 다른 시간에는 버튼이 클릭되지 않습니다. 버튼을 클릭하지 않으면 처음부터 다시 테스트 케이스를 실행해야합니다. 우리가 뭘 잘못하고 있니? 이것이 ranorex의 알려진 문제점 일 경우, 대안을 제안하십시오.Ranorex 테스트 자동화 문제 : Silverlight 웹 앱에서 신뢰할 수있는 버튼을 클릭 할 수 없음

답변

1

Ranorex와 같은 문제에 대해 아직 들어 본 적이 없지만 타이밍 문제 일 수 있습니다. 클릭하기 바로 전에 Validate.Exists(yourButton)을 추가 할 수 있습니다. 그러면 버튼이 성공적으로로드 된 후 클릭이 수행됩니다. WebElement 인 경우 일반 Click() 메서드 대신 PerformClick() 메서드를 사용할 수도 있습니다. EnsureVisible() 또는 Focus() 메서드와 같이 버튼이 보이는 영역에 있고 포커스가있는 다른 방법도 있습니다. Ranorex의 온라인 API에서 사용되는 어댑터의 사용 가능한 방법을 찾을 수 있습니다.

+0

Ranorex에서 일하십니까? –

+0

우리는'Focus()'메서드를 사용하고 있지만 여전히이 문제가 발생합니다 .... 우리가 시도한 것은 적어도 두 번 이상'click()'이벤트를 사용하는 것입니다. 또 다른 해결 방법은 표시 될 때까지 버튼을 계속 클릭하는 것입니다. 물론 버튼이 다른 페이지를로드하지 않거나 클릭 이벤트 후에도 여전히 존재하는 경우에는 사용할 수 없습니다. –

2

나는 똑같은 문제에 직면하고 있었지만 클릭 직전에 Validate.Exists (infoObject)를 도입하여 문제를 해결할 수있었습니다. Validate.Exists API에서 버튼의 infoObject 또는 요소를 전달해야합니다.

예 : 버튼은 스크롤없이 볼 수있는 영역 내에 있지 않으면

안부
Validate.Exists(repo.MyApp.LoginBtnInfo); 
var button = repo.MyApp.LoginBtn; 
button.Click(); 

, Avinash 니 감은

1

,이에서는

var button = repo.Buttons.button1; 
button.EnsureVisible(); 
button.Click(); 

을 사용할 수 있습니다 버튼이 지켜 지도록 강제합니다.

1

xpath와 요소 Id-s에 문제가있을 수 있습니다.

예를 들어 SAP 관련 구성 요소에서 페이지를 탐색하고 뒤로 이동해도 요소 ID가 변경되는 경우 정규 표현식을 사용하여보다 강력한 xPath 경로 변수를 만들어야 할 수 있습니다.

경로가 변경되지 않는 부분을 찾으십시오 (예 : "iFrame id ="MainContent ""또는 "btn id ="ID_XXXX_Search_Button "") - 문제가 해결되지 않은 경우에만 도움이됩니다. .

Ranorex 정규 표현식 정보는 여기에서 찾을 수 있습니다 : http://www.ranorex.com/support/user-guide-20/ranorexpath.html#c3294

의 빠른 예를 들어 내가 이야기하고 :

하는의 우리가 그것의 이름으로 변경 ID가 입력 필드가 있다고 가정 해 보자 :

US_EL.ID_F2B49DB60EE1B68131BD662A21B3432B:V_MAIN._046A-r 

그리고는 변경되지 않습니다 이드 부분임을 알고

:V_MAIN._046A-r 

I 정규 표현식을 사용하여 변하지 않는, 요소 ID의 종료에 의하여 요소 찾고이 경로를 만들 수있는 것은 :

/dom[@domain='test.example.com']//iframe[#'identifier']//iframe[#'identifier2']//input[@id**~'^**:V_MAIN._046A-r'] 

굵은 부분 ID가 입력 요소를 검색하도록 지정할 것이다 ": V_MAIN._046A-r"로 끝납니다.

동일한 경로에서 여러 요소가 반환 될 수있는 부분적으로 같은 이름을 사용하는 요소가있는 경우 문제가 발생할 수 있습니다. 따라서이 문제가 발생하면 경로에 몇 가지 특정 지점을 추가하는 것이 좋습니다 (예 : "iframe [# 'identifier2']").