카피 바라로 채울 수있는 적절한 레이블이있는 필드가 있습니다.
fill_in 'Your name', with: 'John'
채우기 전에 값을 확인하고 파악할 수 없습니다.
fill_in
다음 줄 뒤에 추가하면 :
find_field('Your name').should have_content('John')
페이지를 저장하여 확인한대로 바로 채우기가 작동했지만 테스트는 실패합니다.
내가 무엇을 놓치고 있습니까?
답변
xpath 쿼리 를 사용하여 input
특정 값을 가진 요소 (예 : ‘John’) 가 있는지 확인할 수 있습니다 .
expect(page).to have_xpath("//input[@value='John']")
자세한 내용은 http://www.w3schools.com/xpath/xpath_syntax.asp 를 참조 하십시오 .
아마도 더 예쁘게 :
expect(find_field('Your name').value).to eq 'John'
편집 : 요즘 아마도 have_selector를 사용합니다.
expect(page).to have_selector("input[value='John']")
페이지 객체 패턴을 사용하는 경우 (해야합니다!)
class MyPage < SitePrism::Page
element :my_field, "input#my_id"
def has_secret_value?(value)
my_field.value == value
end
end
my_page = MyPage.new
expect(my_page).to have_secret_value "foo"
답변
또 다른 예쁜 해결책은 다음과 같습니다.
page.should have_field('Your name', with: 'John')
또는
expect(page).to have_field('Your name', with: 'John')
각기.
또한 참조 참조 .
참고 : 비활성화 된 입력의 경우 옵션을 추가해야합니다 disabled: true
.
답변
자리 표시자를 테스트하려는 경우 다음을 사용하십시오.
page.should have_field("some_field_name", placeholder: "Some Placeholder")
또는:
expect(page).to have_field("some_field_name", placeholder: "Some Placeholder")
사용자가 입력 한 값을 테스트하려는 경우 :
page.should have_field("some_field_name", with: "Some Entered Value")
답변
나는 약간 다른 것을하는 방법을 궁금해했다 : Capybara가 일치 할 때까지 매처를 다시 테스트 할 수있는 능력을 사용하면서 필드에 어떤 가치 가 있는지 테스트하고 싶었다 . 이를 위해 “필터 블록”을 사용할 수 있습니다.
expect(page).to have_field("field_name") { |field|
field.value.present?
}
답변
