Capybara에서 확인란을 확인하는 방법은 무엇입니까? 다른 값을 가진 동일한 ID를 가지고 있으므로

Rspec과 Capybara를 사용하고 있습니다.

확인 단계를 작성하려면 checkbox어떻게해야합니까? check값으로 시도했지만 내을 찾을 수 없습니다 checkbox. 실제로 다른 값을 가진 동일한 ID를 가지고 있으므로 어떻게 해야할지 모르겠습니다.

코드는 다음과 같습니다.

 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="61" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="62" name="cityID">
 <input id="cityID" type="checkbox" style="text-align: center; opacity: 0;" value="63" name="cityID">



답변

나는 다음이 나를 위해 일한 것을 발견했다.

# Check
find(:css, "#cityID[value='62']").set(true)

# Uncheck
find(:css, "#cityID[value='62']").set(false)


답변

이 같은 여러 요소를 생성하는 것이 좋습니다 아니다 ID를 , 그래서 (그리고뿐만 아니라 그것을 위해) 당신은 쉽게 / 선택 해제 체크 할 수 확인란 우아한와

check 'cityID'
uncheck 'cityID'

하나는 동일한 ID로 여러 요소를 방지하고 여전히 체크 박스를 체크 할 필요가없는 경우 특정 값을 , 그는 이렇게 함께 할 수있는

find(:css, "#cityID[value='62']").set(true)
find(:css, "#cityID[value='62']").set(false)

카피 바라 입력 조작 에 대한 자세한 내용은 여기를 참조하십시오.


답변

capybara 테스트를 실행할 때 page객체 를 얻었습니다 . 이를 통해 모든 확인란을 선택 / 선택 취소 할 수 있습니다. @buruzaemon이 이미 언급했듯이 :

이름, 아이디 또는 레이블 텍스트로 확인란을 찾아서 확인합니다.

따라서 HTML에 다음과 같은 확인란이 있다고 가정합니다.

<label>
  <input type="checkbox" value="myvalue" name="myname" id="myid">
  MyLabel
</label>

이것을 확인할 수 있습니다 :

page.check('myid')
page.check('MyLabel')
page.check('myname')

체크 해제는 사용 page.uncheck방법 과 동일 합니다.


답변

나는 당신이 당신의 양식 요소에 독특한 s를 주어야 할 수도 있다고 생각합니다.id먼저 .

그러나 Capybara 및 확인란과 관련하여 Capybara :: Node :: Actions # check 인스턴스 메서드 를 사용하면 이름, ID 또는 레이블 텍스트로 확인란을 찾아 확인할 수 있습니다.


답변

상자는 텍스트, 예를 들어 ‘옵션 3’과 연결되어있는 경우, 다음의로 capybara 3.0.3방금 할 수있는

check 'Option 3'


답변

나는 이것이 더 오래된 질문이라는 것을 알고 있지만, 나는이 문제를 직접 해결하고 위의 모든 것을 시도해 보았으며, 이것이 마침내 나를 위해 일한 것입니다.

find("input[type='checkbox'][value='#{cityID.id}']").set(true)

이것이 누군가에게 도움이되기를 바랍니다. Capybara 2.4.4를 사용하고 있습니다.


답변

오래된 주제이지만 다른 해결책은 다음과 같습니다.

check('Option 3', allow_label_click: true)