2017-12-29 4 views
0

상황 : 내 응용 프로그램에 지점을 추가 : 내 RSpec에에서 (루비와 카피 바라를 사용하여)는내 rspec에서 요소 (버튼)가 "클릭 가능"한지 감지 할 수 있습니까?

  1. 내 응용 프로그램에서 작업을 테스트하기 위해 링크를 클릭합니다.
  2. 모달 창이 열리고, 분기를 선택한 다음 "제출"버튼을 클릭하여 내 응용 프로그램에 분기를 추가합니다. "제출"을 클릭하면 모달 창이 닫힙니다.
  3. rspecs는 주 화면에서 "저장"을 클릭하여 응용 프로그램의 상태를 저장하고 효과적으로 분기 저장을 저장합니다.

문제 : (겉보기)는 분기를 선택하는 데 사용되는 모달 윈도우가 여전히 존재하는 동안 메인 화면에 "저장"버튼을 클릭하려고하기 때문에 RSpec에 실패한다. 이 테스트는 "저장"버튼 구성 요소를 찾을 수 없다는 불평은하지 않지만 클릭 할 수는 없습니다.

로그의 오류는 다음과 같습니다

[...]Save</button> is not clickable at point (692, 23). Other element would receive the click[...]잡았다이 RSpec에는 내 로컬 서버에 대해 실행할 때와 같은 일부 환경에서 제대로 통과,하지만 때 실패 우리의 자동화 서버에 의해 실행됩니다. 따라서이 테스트는 "벗겨지기 쉬운"것으로 태그되었습니다.

잠재적 인 솔루션 : 우리가 지금까지 시도하는 것 : 우리의 "클릭 구성"주위

  • 플레이, 우리가 "준비 상태"와 모달 창이 사라지고 있음을 확신하고. 우리가 계속 같은 오류를 범했기 때문에 우리는 이것으로 실패했습니다.

  • "대기"를 구현하십시오. (가) 존재 모달 윈도우의 버튼을 "제출"경우 모달 창

    XYZ.add_new_branch_name(@branch_name) while Utilities.element_visible?(:xpath, myElement) sleep(0.5) end XYZ.save

그동안 조건 검사를 존재하는 듯하면서 우리는 조금만 잠 루프를 추가했다. element_visible 기능은 find 이미 버튼이 존재하고 볼 수 있지만 클릭하지 않을 수 있음을 고려하는 경우는

find(method,element).visible? 

하지만 는 잘 모르겠어요 사용합니다. 이 이후

여전히 우리는 "저장"버튼을 클릭하기 전에 모달이 사라 있는지 확인하기 위해 우리의 모든 노력에도 불구하고, 실패 물어 어린 아이 원하는 :

적절한 방식이 있습니까 모달 윈도우 뒤에있는 요소가 클릭 가능 여부를 감지합니다. 또는 rspecs를 사용하지 않습니까?

답변

1

find은 "클릭 가능성"이 아니라 "가시성"에 대한 것입니다 (다른 드라이버는 "가시성"과 약간 다른 해석을 할 수 있습니다).당신이 볼 수있는 벗겨짐의 이유는 테스트를 실행하는 기계의 속도 일 가능성이 높습니다. 이는 모달 애니메이션 효과의 타이밍에 영향을 미칩니다. 이 문제를 해결하는 가장 좋은 방법은 테스트 모드에서 애니메이션을 사용하지 않도록 설정하는 것입니다 (애니메이션을 사용하는 방법은 애니메이션에 사용하는 라이브러리 및/또는 CSS에 따라 다릅니다). 다른 방법은 'Save'버튼을 클릭하기 전에 모달이 사라 졌는지 확인하는 것입니다. 그러나 자신의 루프를 작성하는 대신 Capybara가 제공 한 메소드 (대기/재 시도 동작 포함)를 사용해야합니다. 그에 대한.

expect(page).not_to have_css('css selector of the modal') # RSpec version 
assert_no_css('css selector of the modal') # minitest version 

오류가 발생한 마우스 위치를 살펴본 후에 발생할 수있는 다른 잠재적 인 문제는 화면 크기와 스크롤입니다. 페이지를 '저장'버튼으로 이동해야하고 (692, 23) 버튼을 고정 헤더 뒤에 놓아야하는 경우 (버튼 클릭 시도 전에 스크린 샷을 찍어서 확인할 수 있어야 함) 단추를 클릭하기 위해 사용하는 드라이버가 무엇이든 가능하지 않습니다. 이 경우 execute_script을 사용하여 페이지를 다른 위치로 스크롤해야 페이지에서 페이지가 보이지 않거나 "브라우저"크기가 커지기 때문에 테스트에서 스크롤링이 필요하지 않습니다.

관련 문제