Capybara에서 확인란을 어떻게 확인합니까?
저는 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 입력 조작에 대한 자세한 내용은 여기에서 확인할 수 있습니다.
Capybara 테스트를 실행할 때, 당신은 다음을 얻었습니다.page
물건.확인란을 선택하거나 선택 취소하는 데 사용할 수 있습니다.@buruzaemon이 이미 언급했듯이:
이름, ID 또는 레이블 텍스트별로 확인란을 찾아 선택합니다.
HTML에 다음과 같은 확인란이 있다고 가정합니다.
<label>
<input type="checkbox" value="myvalue" name="myname" id="myid">
MyLabel
</label>
다음을 통해 확인할 수 있습니다.
page.check('myid')
page.check('MyLabel')
page.check('myname')
선택 취소는 동일한 용도입니다.page.uncheck
방법.
우선 폼 요소에 독특한 점을 부여해야 할 것 같습니다.
그러나 Capybara 및 확인란과 관련하여 Capybara:노드::Actions#check instance 메서드를 사용하면 이름, ID 또는 레이블 텍스트별로 확인란을 찾아 확인할 수 있습니다.
상자가 텍스트(예: '옵션 3')와 연결된 경우 다음과 같이 표시됩니다.capybara 3.0.3
당신은 그냥 할 수 있습니다
check 'Option 3'
레이블 요소 뒤에 숨겨진 사용자 지정 확인란에 문제가 있습니다.필요한allow_label_click: true
.
이 블로그 게시물과 관련하여,
check 'checkbox[name]', allow_label_click: true
라벨에 "약관에 동의합니다"와 같은 링크가 있는 경우, 위의 코드는 페이지를 열 것이며, 이는 사용자가 원하는 것이 아닙니다.
대신 이렇게 하세요.
find(:css, "#checkbox_id", visible: false).execute_script('this.checked = true')
이것이 오래된 질문이라는 것을 알지만, 저는 이 문제를 직접 해결해 왔고, 위의 모든 것을 시도해 본 결과, 이것이 마침내 저에게 효과가 있었습니다.
find("input[type='checkbox'][value='#{cityID.id}']").set(true)
이것이 누군가에게 도움이 되기를 바랍니다.Capybara 2.4.4를 사용하고 있습니다.
오래된 주제이지만 또 다른 해결책은 다음과 같습니다.
check('Option 3', allow_label_click: true)
또한 찾을 때 문제가 있을 경우 :sys 대신 :xpath를 사용할 수도 있습니다.
find(:xpath, '//*[@id="filename"])"set(true)
Chrome(그리고 확실히 다른 브라우저)에서 "요소를 검사"할 수 있으며, 관심 있는 요소를 마우스 오른쪽 버튼으로 클릭하면 xpath가 무엇인지 모를 경우 '복사 xpath'가 있습니다.
또한 이 예에서는 모든 확인란이 선택되어 있지 않은지 확인할 수 있습니다.
all('input[type=messages] 및 각 do |messages| 확인란 .should_not_checked end
.set(true)가 작동하지 않아서 .click:
find(...).click
저는 이것이 더 우아해 보인다고 믿습니다.
find_by_id("cityID").set(true)
레일 7에서 테스트됨.잘 작동합니다.
확인란 선택 방법
check 'name_of_checkbox'
check find(".whenever input")[:id]
저는 이것이 Capybara가 그 입력에 연결된 이벤트 청취자를 기다리게 할 것이라고 생각합니다. 때때로 기다리지 않으면 골치 아픈 일입니다.입력에 ID가 없는 경우 다른 속성을 선택합니다(ID가 있어야 함)...
언급URL : https://stackoverflow.com/questions/8297624/how-to-check-a-checkbox-in-capybara
'programing' 카테고리의 다른 글
SQL Server에서 열이 참조되는 모든 위치를 어떻게 찾을 수 있습니까? (0) | 2023.07.15 |
---|---|
SQL Server에서 데이터베이스의 테이블에 읽기 및 쓰기 액세스 권한을 부여하는 T-SQL이란 무엇입니까? (0) | 2023.07.15 |
사용자 "이름" 필드의 적절한 길이 제한은 얼마입니까? (0) | 2023.07.15 |
Visual Studio Code Intelliense가 매우 느립니다. 제가 할 수 있는 일이 있습니까? (0) | 2023.07.15 |
루트를 집계하기 위해 리포지토리 축소 (0) | 2023.07.15 |