2013-03-18 3 views
0

Ruby on Rails 앱에 설치된 turbolinks 젬없이 셀렌 테스트를 실행하면 테스트가 통과됩니다. 터보 링크를 포함 시키면 테스트가 실패합니다. 예를 들어 테스트가
Turbolinks with Selenium IDE 사용

오픈/
clickAndWait 링크 = 로그인을 시작하면 유형 ID = session_email [email protected]

그럼 얻을 것이다 오류
"[오류] 요소 ID = 발견되지 session_email. 내가 페이지 소스를 볼 때

에서, session_email ID가 설치 turbolinks 거기 아직도있다. 나는이 완전히로드 된 페이지를 감지에 문제가있을 수 있습니다 것처럼 보입니다이 페이지 http://www.digitalkingdom.org/rlp/tiki-index.php?page=Selenium+And+Javascript을 발견했다.

테스트 스위트에서 수 백 줄을 변경하지 않고도이 문제를 해결할 수 있습니까? 그렇지 않다면 터보 링크 된 페이지가 완전히로드되었는지 테스트 할 수있는 신뢰할 수있는 셀렌 메서드가 있습니까?

답변

1

github turbolinks-compatability project의 도움을받은 후에이 질문에 부분적으로 대답 할 수 있습니다.

터보 링크 보석을 사용하는 경우 페이지가 실제로로드되었는지 확인하려면 셀레늄 테스트 케이스를 수정해야합니다. 테스트가

Open/
clickAndWait link=Sign in 
type id=session_email [email protected] 

에 다음 코드를 가지고 예를 들어, 다음은

Open/
click link=Sign in 
waitForElementPresent id=session_email 
type id=session_email [email protected] 

에 수정 될 필요가있다 무엇에 따라 사용할 수 있습니다 "WAITFOR"수정의 숫자 다음에 테스트 할 페이지의 기능.

그러나 자바 스크립트 팝업이 포함 된 테스트의 경우 waitFor 명령을 추가하면 안됩니다. 예를 들어, 테스트를 거친 경우

clickAndWait link=Delete 
assertConfirmation Are you Sure? 

코드를 수정하면 안됩니다. 실제로 waitFor 테스트를 추가하면 자바 스크립트 팝업의 경우 실행이 중단됩니다.

이 해결 방법은 코드를 수동으로 수정하는 것입니다. 이 문제를 처리 할 수있는 더 나은 방법이 있는지 Selenium Users 그룹에 issue을 열었습니다.