2017-04-19 5 views
0

입력되는 모든 입력란을 찾을 수있는 방법이 있습니까? 입력 = 이메일? 나는 그 ID를 가지고 등등하지만 특정 조건에 따라 변경 볼 수 있습니다입력란을 기준으로 필드 찾기

<input id="keeper-email_email" name="keeper-email.email" value="" 
     aria-describedby="keeper-email_email-hint" no_optional_label="true" 
     type="email" autocomplete="off" maxlength="254"> 

:

는 여기에 HTML 코드입니다. 이메일을 입력하고 필요한 이메일 주소를 입력하는 필드를 식별 할 수있는 메소드를 작성하려고했습니다.

카피 바라와 함께 할 수있는 방법이 있습니까?

나는 시도했다 : 모든 이메일 양식 단어 '이메일'을 가지고 있기 때문에

emails = all(:xpath, "//label[contains(text(), 'email')]") 
email = emails[0].text 
email_2 = emails[1].text 
fill_in(email, with: 'bla') 
fill_in(email_2, with: 'blo') 

이 작동 : 주위에 작은 연주 후

all('input[type='email']") 

답변

1

읽을 수를 유지하려면, 당신은 당신이 한 적어도 하나의 필드있을 것입니다 알고 있다면 당신은 아마 원하는

fields = all(:field, type: 'email') 
fields[0].set('bla') 
fields[1].set('blo') 

:field 선택의 type 옵션을 원하는

all(:field, type: 'email', minimum: 1) 

그래서 적어도 하나의 필드가 나타나기를 기다리는 카피 바라스 동작을 사용한다는 것입니다. (정확히 2 가지가있을 경우 count: 2을 옵션으로 사용하십시오)

만이있을 것입니다 경우 또 다른 옵션은 하나가 될 것

find_field(type: 'email') 

하면 오히려 당신이 또한

을 할 수있는 부분 텍스트 '이메일'의 레이블을 확인 할 필드의 유형에 일치하는 것보다
all(:field, 'email', exact: false) # The same count/minimum/etc options from above can be used here too 
+0

내 것보다 훨씬 낫습니다. 당신. – Tom

1

, 나는 일 다음과 함께했다 라벨 텍스트에

+1

내 대답보기 - 더 신뢰할 수 있고 (개수/최소/etc 옵션을 사용할 때) 더 안정적 일 것입니다 (다른 세트를 호출하는 fill_in 대 set을 호출하는 경우) –