Silverlight
웹 응용 프로그램의 경우 Ranorex automation framework
을 사용하여 몇 가지 테스트 사례를 자동화했습니다. 이 테스트 케이스는 화면에서 특정 메시지를 호출하기 위해 단추를 클릭하는 것과 관련이 있습니다. 화면에서 버튼을 잡으려면 먼저 Ranorex 버튼 객체를 만든 다음 Ranorexpath
을 사용하여 해당 요소를 가리 키십시오. 그런 다음 RanorexButton.Click()
이벤트를 사용하여 버튼을 클릭합니다. 그러나이 이벤트는 신뢰할 수 없습니다. 때로는 작동하며 다른 시간에는 버튼이 클릭되지 않습니다. 버튼을 클릭하지 않으면 처음부터 다시 테스트 케이스를 실행해야합니다. 우리가 뭘 잘못하고 있니? 이것이 ranorex의 알려진 문제점 일 경우, 대안을 제안하십시오.Ranorex 테스트 자동화 문제 : Silverlight 웹 앱에서 신뢰할 수있는 버튼을 클릭 할 수 없음
답변
Ranorex와 같은 문제에 대해 아직 들어 본 적이 없지만 타이밍 문제 일 수 있습니다. 클릭하기 바로 전에 Validate.Exists(yourButton)
을 추가 할 수 있습니다. 그러면 버튼이 성공적으로로드 된 후 클릭이 수행됩니다. WebElement 인 경우 일반 Click() 메서드 대신 PerformClick()
메서드를 사용할 수도 있습니다. EnsureVisible()
또는 Focus()
메서드와 같이 버튼이 보이는 영역에 있고 포커스가있는 다른 방법도 있습니다. Ranorex의 온라인 API에서 사용되는 어댑터의 사용 가능한 방법을 찾을 수 있습니다.
나는 똑같은 문제에 직면하고 있었지만 클릭 직전에 Validate.Exists (infoObject)를 도입하여 문제를 해결할 수있었습니다. Validate.Exists API에서 버튼의 infoObject 또는 요소를 전달해야합니다.
예 : 버튼은 스크롤없이 볼 수있는 영역 내에 있지 않으면
안부Validate.Exists(repo.MyApp.LoginBtnInfo);
var button = repo.MyApp.LoginBtn;
button.Click();
, Avinash 니 감은
,이에서는
var button = repo.Buttons.button1;
button.EnsureVisible();
button.Click();
을 사용할 수 있습니다 버튼이 지켜 지도록 강제합니다.
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']").
Ranorex에서 일하십니까? –
우리는'Focus()'메서드를 사용하고 있지만 여전히이 문제가 발생합니다 .... 우리가 시도한 것은 적어도 두 번 이상'click()'이벤트를 사용하는 것입니다. 또 다른 해결 방법은 표시 될 때까지 버튼을 계속 클릭하는 것입니다. 물론 버튼이 다른 페이지를로드하지 않거나 클릭 이벤트 후에도 여전히 존재하는 경우에는 사용할 수 없습니다. –