2016-09-02 4 views
0

입력 필드가 clear 인 이유를 모르겠습니다.입력 필드 지우기 : # <Watir :: Input : XYZ> (NoMethodError)에 대해 정의되지 않은 메소드 'clear'

PageObject :

element(:test_input_field) { |b| b.input(class: "search-field") } 

def set_search_value(search_entry) 
    test_input_field.when_present.clear 
    test_input_field.when_present.set(search_entry) 
end 

Step_file :

page.set_search_value(search_entry) 

출력 :

undefined method `clear' for #'<'Watir::Input:0x00000003980d20'>' (NoMethodError) 
+0

를, 그래서이 라인'test_input_field.when_present.clear을 제거 할 수 있습니다 그리고 시도해보십시오. –

+1

kk yea true,하지만 나를 위해 더 명확한 이유는 분명하고 입력이 함께 작동하지 않습니다 :) – Becks303

+0

이것은 저스틴 코에 의해 이미 대답했습니다. 대답을 따를 필요가 있습니다. :) –

답변

1

(및 set) 메소드는 일반 입력 요소 (예 : Watir::Input)에 대해 정의되어 있지 않습니다. 텍스트 필드, 체크 박스 등의 특정 입력 유형에 대해서만 정의됩니다.

코드를 작동 시키려면 input을 텍스트 필드 인 특정 유형으로 변환해야합니다.

가 @SaurabhGaur가 set은 이미 당신이 단지 수 있도록, 기존 값을 취소하여 시작 언급
test_input_field.when_present.to_subtype.clear 
test_input_field.when_present.to_subtype.set(search_entry) 

으로 : 당신은 to_subtype 방법을 사용하여이 작업을 수행 할 수 있습니다

test_input_field.when_present.to_subtype.set(search_entry) 

input 유형이 변경되지 아니하는 한, 요소를 text_field으로 정의하는 것이 더 바람직하므로 변환 할 필요가 없습니다. 그것은 당신이 사용하고있는 페이지 개체 라이브러리에 의존 수도 있지만, 난 당신이 할 수있는 기대 : 나는 새 값을 설정하기 전에 이전 값을 지우도 설정 생각

element(:test_input_field) { |b| b.text_field(class: "search-field") } 

def set_search_value(search_entry) 
    test_input_field.when_present.clear 
    test_input_field.when_present.set(search_entry) 
end 
+0

들어 본 적이 없습니다. to_subtype, 흥미 롭습니다. 그래, text_field는 현재 잘하고있었습니다. 그래서 .clear는 일반 입력에서 작동하지 않는 것 같습니다. thx – Becks303

+1

'clear'와'set '의 문제점은 입력 유형에 따라 기능적으로 다른 작업을 수행해야한다는 것입니다. 예를 들어 체크 박스를 지우려면 클릭을해야합니다. 텍스트 필드를 지우는 것은 텍스트를 선택하고 삭제 버튼을 누르는 것을 의미합니다. 결과적으로 일반 입력이 아닌 특정 입력 유형에 대한 메소드를 구현하는 것이 이치에 맞습니다. –

+0

자, 알았어. – Becks303