2014-10-05 5 views
2

우리의 자동 응답기 테스트 케이스에서는 UiObject.clickAndWaitForNewWindow를 사용하여 클릭 동작을 트리거합니다. 그러나 때로는 단지 장치가 응답/페이지로드에 너무 오래 걸리는 경우가 있습니다. 따라서 페이지가 완전히로드되기 전에 기대되는 위젯이 아직 준비되지 않았기 때문에 후속 분석/테스트가 실패합니다. 이는 일부 테스트 케이스가 결정되지 않은 방식으로 실패합니다. 대부분의 경우 단순히 통과 한 테스트 케이스를 재실행합니다.UiObject clickAndWaitForNewWindow가로드하는 데 너무 오래 걸린다

다음 확인을 계속하기 전에 UiObject.clickAndWaitForNewWindow가 예상 된 페이지를 완전히로드하는지 확인할 방법이 있습니까? UiObject.clickAndWaitForNewWindow 직후에 절전 명령문을 삽입 할 수 있습니다. 이중 가장자리 칼로 작동하지만이 문제는 실제로 해결되지 않습니다.

UiObject.clickAndWaitForNewWindow(); 
// how to wait until the page is loaded completely 
new UiSelector(...); // search for widgets that are supposed to be on the newly loaded page 

답변

0

여기서 한 가지 방법은 while 루프를 추가하는 것입니다.

당신이 하나 개의 창에서 몇 가지 요소를 누른 후 새로운 화면이 나타나면 말해 당신은 새 창에서 일부 요소 (예를 들어 메뉴)에서 작업을 수행 할하고 해당 요소는 다음과 같이 정의된다 -

//say you tapped on some element(say abc) on the first window 
abc.click(); 

//now you want to wait till the element (say menu) appears on the next screen which is decl as - 
UiObject menu = new UiObject(new UiSelector().resourceId("com.example.test:id/elmnt")); 

//add a while loop to check if that element exists and add a print statement just to keep printing till that element appears on the screen- 
while (!menu.exists()) { 

    System.out.println("Menu will appear in some time"); 

} 

System.out.println("Menu appeared"); 
//carry other operations here 
+0

감사합니다. Smriti! 여기서는 resource-id "com.example.test : id/elmnt"를 알고 있다고 가정합니다. 우리가하지 않으면? 더 나쁜 것은 우리가 새 페이지를 식별하는 데 도움이 될 수있는 특별한 위젯을 모른다는 것입니다. – user908645

+0

아마 이런 식으로 물어 봐야합니다. 어쨌든, 반환하기 전에 완전한 객체를 생성하는 ctor와 같은데, 모든 위젯에 새 페이지가 준비되었다고 말하는 자동화가 있습니까? – user908645

0

제가 사용하고 있습니다

UiDevice.waitForWindowUpdate(package, timeout); 

그리고 지금까지 문제가 없습니다. 이것으로 어떤 요소의 id도 필요 없다. 시간 초과가없는 옵션도 있다고 생각합니다.