2014-03-13 1 views
1

나는 칼라 바쉬의 진정한 목적에 대해 약간 혼동이 있다고 생각한다.복잡한 내비게이션에 칼라 바쉬 사용하기

Then I see "Sign In" 
Then I wait to see if I am on a good screen 
Then I enter "my_username" into text field number 1 
Then I touch list item number 2 

을하지만 어떻게 연산자를 사용합니까 :

나는 내가 읽은 몇 가지 데모 스크립트를 발견했습니다? 내 응용 프로그램에서 사용자는 종종 로그인 페이지에 착륙하지만 실제로 로그인 한 경우 홈 페이지에 착륙 할 수 있습니다. 또는 그가 처음으로 실행하는 경우 자습서에서. 조건에 대해 새로운 이용 약관을 확인하지 않은 경우 또는 일부 작업이 캐시에있는 경우 다른 화면에서 확인하십시오. 그래서 검증을 필요로합니다.

그러나 내가 발견 한 모든 것은 그때 스크립트가 지정된 항목을 찾지 못하면 중단됩니다.

나는 다음과 같이 할 것 단계 구축을 위해 노력 해요 :

If I am on terms and conditions, click Accept 
If I am on login, click Sign In 
If I am on tutorial, click Close 

을 그리고 특별한 순서는 없다. 웹에서 많은 자습서를 찾았지만 여러 시나리오를 가질 수있는 응용 프로그램을 통한 일반 탐색에 적용되는 것은 없습니다. 내가 이해하는 것은 일단 검사가 통과하지 않으면 멈추는 것이다. 뭔가 (물건이

Ok, check where I am, and according to where I am in the app, reacts the good way. 

인가 : 종종 같은 런타임 오류와, 내가 좋아하는 물건을하고 싶지 더 일반적인 방법으로

를 "그래서 충돌 것 -X-라는 이름의 버튼이 없다") 나는 칼라 백의 목표에 대해 이해하지 못한다. 그리고 이런 종류의 시험을 칼라 바시에서 할 수 있습니까?

한 번의 테스트로 인해 더 이상 유효하지 않은 테스트를 취소하는 방법은 무엇입니까?

답변

2

해결책은 사전 조건 작업을 수행 할 단계를 개발하는 것입니다.

Given I am on Sign In screen 
Then ... 

그리고 Given I am on Sign In screen

단지 예를 들어
start_test_server_in_background 
# additionally you may need some wait_for this line 
touch 'accept_btn_locator' unless query('accept_btn_locator').empty? 
touch 'sign_in_btn_locator' unless query('sign_in_btn_locator').empty? 
touch 'close_btn_locator' unless query('close_btn_locator').empty? 

그것은 같은 것이있다 : 같은

그래서 시험을 볼 것이다. 일반적으로 구현은 더 복잡합니다.

+0

그리고 @ 22mainstream90의 +1은 Ruby API 문서를 가리 킵니다. –

2

이 단계를 돕기위한 단계를 직접 만들 수 있지만 "내가 X 페이지에있는 경우"기능이 없습니다. Ruby API는 매우 효과적인 테스트를 만들 수있는 매우 유용한 기능을 제공합니다. Ruby API에 대한 문서는 here에 있으며 그 점을 확인하는 것이 좋습니다. 테스트가 항상 같은 방식으로 실행되도록하려면 테스트 할 모든 주요 기능마다 다른 '기능'을 만듭니다. Calabash가 실행되면 모든 기능 전에 앱을 다시 설치하므로 어느 페이지에도 계속 로그인하지 않을 것입니다. 간단한 로그인/로그 아웃 기능을 작성한 다음 다음 기능에 동일한 단계를 사용하여 로그인하고 다른 기능으로 이동할 수 있습니다. 진정한 Calabash에 익숙해지기 위해서는 calabash 콘솔을 사용하는 것이 좋습니다. 이를 통해 명령 줄을 통해 앱을 제어 할 수 있으며 모든 다른 명령이 작동하는 방식을 배우는데 매우 유용합니다. 조금이라도 도움이 되었으면 좋겠다. 의문점이 있으시면 저에게 태그 달아주세요. 매일 카라바시를 사용합니다.

+1

"Calabash가 실행되면 모든 기능 전에 응용 프로그램을 다시 설치하므로 어떤 페이지에도 계속 로그인하지 않도록 할 수 있습니다." 이것은 iOS 측에서 엄격하게 적용되지 않습니다. 시뮬레이터와 XTC에서는'RESET_BETWEEN_SCENARIOS' 환경 변수를 사용하여이 동작을 제어 할 수 있습니다. iOS 기기에서는 호리병으로 앱을 다시 설치하지 않습니다. 나는 그 행동이 Calabash Android에 무엇인지 확신하지 못합니다. – jmoody

+0

내 관심사는 사전 정의 된 단계를 어디에서 찾을 지 모르기 때문에이 링크가 유용합니다. –

2

나는 호리 호리한 x 플랫폼 예를 https://github.com/calabash/x-platform-example으로 봅니다. 그것은 당신이 묘사하고있는 것을 정확히 수행하기위한 '페이지 - 객체'스타일의 프레임 워크를 사용합니다. 여러 프레임 워크를 사용하기 위해 만들어졌지만 왜 하나의 프레임 워크로 사용할 수 없는지는 알 수 없습니다. 나는 더 많이 씁니다. 그러나 그것은 단지 그들이 가지고있는 것을 복사 할 것입니다.

행운을 빈다.

관련 문제