2013-10-08 5 views
1

UIAutomation API로 많은 테스트를 작성했습니다. 테스트는 Jenkins에 의해 시작되고 Tuneup JS를 사용합니다.UIAutomation iOS : 대부분의 테스트에서 픽커 휠이 유효하지 않습니다.

픽커 휠에 문제가 있습니다. 몇 가지 테스트에서 픽커 휠이 발생하고 잘못된 요소 (UIAElementNil)로 인해 거의 항상 실패합니다. 필자는 픽업 휠 요소에서 핸들을 얻는 데 테스트 시간을 허용하기 위해 권장 된 target.pushTimeout()을 사용해 보았습니다. 그리고 운이 없었습니다.

피커 휠로 각 테스트가 가끔 (하지만 드물게) 통과하므로 코드 자체가 문제가되지 않을 것이라고 확신합니다.

자동화 테스트와 피커 휠에서 비슷한 문제가 발생했거나이 문제의 원인 또는 해결책을 찾은 사람이 있습니까?

var picker = app.windows()[2].elements()[0].pickers()[0]; 

당신은 당신이 isValid()를 사용하여이 아래 수행 한 검사를 도입 할 수 있지만, 가장 좋은 방법은 경우 :

target.pushTimeout(PICKER_WHEEL_DELAY); 
rowTap(window.tableViews()[0], PRICE); 

validField1 = false; 
validField2 = false; 

try { 

    var picker = app.windows()[2].elements()[0].pickers()[0]; 
    if (picker.isValid()) { 

     var wheel1 = picker.wheels()[0]; 
     var wheel2 = picker.wheels()[1]; 

     if (wheel1.isValid()){ 

      var pickedItems = wheel1.values(); 
      var nrOfItems = pickedItems.length; 

      if (nrOfItems > 0) { 
       wheel1.selectValue(MIN_PRICE_NEW_HOME); 
       validField1 = true; 
      } 
     } 

     if (wheel2.isValid()){ 

      pickedItems = wheel2.values(); 
      nrOfItems = pickedItems.length; 

      if (nrOfItems > 0) { 
       wheel2.selectValue(MAX_PRICE_NEW_HOME); 
       validField2 = true; 
      } 
     } 
    } 
} 
catch(error) { 
    UIALogger.logFail(error); 
} finally { 
    if (validField1 != true || validField2 != true) { 
     cleanUpAfterPickerFail(app); 
     throw "failed: Couldnt find a valid picker wheel"; 
    } 
} 

app.windows()[2].elements()[0].toolbars()[0].buttons()["Done"].tap(); 
target.popTimeout(); 
+0

픽커 휠에 문제가 있었지만 액세스 할 곳의 코드 부분과 오류 메시지와 함께 로그 부분을 삽입하십시오. – iOSdev

+0

질문에서 말했듯이, 코드가 작동하고 피커 휠이 유효하지 않을 때 오류가 발생합니다. 잘못된 요소에 대한 작업을 수행 할 수 없습니다 : UIAElementNil. 코드 – tecknut

+0

을 포함하도록 편집합니다. 최근에 XCode 5 및 iOS 7로 업데이트 되었습니까? – iOSdev

답변

1

예외가 던져 질 수있는 유일한 선은 try 블록의 첫 번째 바퀴가 접근 가능하고 경로가 올바른 경우 하단의 기록 버튼으로 다시 확인하십시오.

+0

더 잘 설명해 주시겠습니까? 이것이 내 질문에 어떻게 대답하는지 모르겠습니다. – tecknut

+0

내가보기에 무언가가 잘못된 요소에 대해 수행하려고 시도하기 때문에 예외가 발생합니다. 위의 인용 줄에있는 요소를 제외한 모든 잘못된 요소를 필터링 할 때 예외가 throw 될 수있는 유일한 곳입니다. 각 행 다음에 로그에 기록하여 검사 할 수 있습니다. (계측기에 디버그 모드가 없음) 해결책으로 피커를 수동으로 기록 모드에서 탭하고 기록 된 선을 위에 인용 된 것과 비교하십시오. (평등하다면'app' wariable도 문제가 될 수 있습니다.) 두 개의 레코드 버튼이 있습니다! – iOSdev

관련 문제