각 시나리오는 파일의 샘플을 읽고 텍스트 필드에 복사합니다.
def sample(name)
IO.read("spec/samples/#{name}.bib")
end
feature 'Import a record' do
scenario 'from JabRef' do
fill_in 'bibtex', :with => sample('jabref')
in_dialog.click_button 'Import'
...
end
end
이것은 샘플 중 하나에 표가있을 때까지 잘 작동했습니다. 수동 복사 및 붙여 넣기는 작동했지만 테스트는 실패했습니다.
다른 질문 [ 1 ]에서 나는 해석 \t
과 \n
키 입력이 "특징"이어야 한다는 것을 이해했습니다 . 이 기능을 비활성화하고 콘텐츠를 "붙여 넣기"하는 방법이 있습니까?
다른 모든 방법이 실패하면 Javascript를 사용하여 텍스트를 삽입 할 수 있습니다 .
page.execute_script '$("#bibtex").val("' << sample('jabref') << '")'
이 작업을 충분히 자주 수행하면 fill_in_plain
jQuery의 도움을 사용하지 않고 (예를 들어 평범한 오래된 Javascript 사용) 도우미 메서드 ( 또는 이와 유사한) 에서 추출합니다 document.getElementById
.
다음은 여전히 jQuery를 사용하는 적절한 도우미입니다.
module CapybaraWebkitWorkarounds
def fill_in_plain(selector, with: nil)
value = with.gsub '"', "\\\"" # poor man's escaping
page.execute_script %Q{ $("#{selector}").val("#{value}") }
end
end
RSpec.configure do |config|
# make it available in all feature specs
config.include CapybaraWebkitWorkarounds, type: :feature
end
그런 다음 기능 사양에서 간단하게
feature 'Import a record' do
scenario 'from JabRef' do
fill_in_plain 'textarea[name="bibtex"]', with: sample('jabref')
in_dialog.click_button 'Import'
...
end
end
제발 노트는 것을 fill_in_plain
도우미는 이제 jQuery를 선택 (예 : CSS 선택기)의 첫 번째 인수로 문자열을 이해한다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다